You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2017/09/22 14:13:56 UTC

[1/9] isis-site git commit: ISIS-1712: fixes bad link in release docs

Repository: isis-site
Updated Branches:
  refs/heads/asf-site b41664436 -> 8566a8ed6


http://git-wip-us.apache.org/repos/asf/isis-site/blob/3b078e07/content/guides/cgcom/cgcom.html
----------------------------------------------------------------------
diff --git a/content/guides/cgcom/cgcom.html b/content/guides/cgcom/cgcom.html
index f587eb7..b0f2312 100644
--- a/content/guides/cgcom/cgcom.html
+++ b/content/guides/cgcom/cgcom.html
@@ -1679,7 +1679,7 @@ For each zip there is a corresponding signature file (append .asc to the zip's u
 
 In the source code repo the code has been tagged as isis-1.16.0-RC1, helloworld-archetype-1.16.0-RC1 and simpleapp-archetype-1.16.0-RC1; see https://git-wip-us.apache.org/repos/asf?p=isis.git
 
-For instructions on how to verify the release (build from binaries and/or use in Maven directly), see http://isis.apache.org/guides/cgcom.html#_cgcom_verifying-releases
+For instructions on how to verify the release (build from binaries and/or use in Maven directly), see https://isis.apache.org/guides/cgcom/cgcom.html#_cgcom_verifying-releases
 
 Please verify the release and cast your vote.  The vote will be open for a minimum of 72 hours.
 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/3b078e07/content/guides/cgcom/cgcom.pdf
----------------------------------------------------------------------
diff --git a/content/guides/cgcom/cgcom.pdf b/content/guides/cgcom/cgcom.pdf
index 486c355..105ce8f 100644
--- a/content/guides/cgcom/cgcom.pdf
+++ b/content/guides/cgcom/cgcom.pdf
@@ -4,8 +4,8 @@
 << /Title (Committers' Guide)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20170815064832+01'00')
-/ModDate (D:20170815064832+01'00')
+/CreationDate (D:20170922120848+01'00')
+/ModDate (D:20170922120848+01'00')
 >>
 endobj
 2 0 obj
@@ -20505,7 +20505,7 @@ endobj
 [179 0 R /XYZ 0 715.0500000000001 null]
 endobj
 182 0 obj
-<< /Length 9617
+<< /Length 9758
 >>
 stream
 q
@@ -20515,10 +20515,10 @@ q
 52.240 805.890 m
 543.040 805.890 l
 545.249 805.890 547.040 804.099 547.040 801.890 c
-547.040 301.470 l
-547.040 299.261 545.249 297.470 543.040 297.470 c
-52.240 297.470 l
-50.031 297.470 48.240 299.261 48.240 301.470 c
+547.040 286.730 l
+547.040 284.521 545.249 282.730 543.040 282.730 c
+52.240 282.730 l
+50.031 282.730 48.240 284.521 48.240 286.730 c
 48.240 801.890 l
 48.240 804.099 50.031 805.890 52.240 805.890 c
 h
@@ -20529,10 +20529,10 @@ f
 52.240 805.890 m
 543.040 805.890 l
 545.249 805.890 547.040 804.099 547.040 801.890 c
-547.040 301.470 l
-547.040 299.261 545.249 297.470 543.040 297.470 c
-52.240 297.470 l
-50.031 297.470 48.240 299.261 48.240 301.470 c
+547.040 286.730 l
+547.040 284.521 545.249 282.730 543.040 282.730 c
+52.240 282.730 l
+50.031 282.730 48.240 284.521 48.240 286.730 c
 48.240 801.890 l
 48.240 804.099 50.031 805.890 52.240 805.890 c
 h
@@ -20755,7 +20755,7 @@ ET
 BT
 59.24 414.5649999999999 Td
 /F4.0 11 Tf
-<6469726563746c79292c2073656520687474703a2f2f697369732e6170616368652e6f72672f6775696465732f6367636f6d2e68746d6c235f6367636f6d5f766572696679696e672d72656c6561736573> Tj
+<6469726563746c79292c207365652068747470733a2f2f697369732e6170616368652e6f72672f6775696465732f6367636f6d2f6367636f6d2e68746d6c235f6367636f6d5f766572696679696e672d> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -20764,9 +20764,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-59.24 385.08499999999987 Td
+59.24 399.8249999999999 Td
 /F4.0 11 Tf
-<506c6561736520766572696679207468652072656c6561736520616e64206361737420796f757220766f74652e202054686520766f74652077696c6c206265206f70656e20666f722061206d696e696d756d206f66> Tj
+<72656c6561736573> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -20777,6 +20777,17 @@ ET
 BT
 59.24 370.34499999999986 Td
 /F4.0 11 Tf
+<506c6561736520766572696679207468652072656c6561736520616e64206361737420796f757220766f74652e202054686520766f74652077696c6c206265206f70656e20666f722061206d696e696d756d206f66> Tj
+ET
+
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+59.24 355.60499999999985 Td
+/F4.0 11 Tf
 <373220686f7572732e> Tj
 ET
 
@@ -20786,7 +20797,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-59.24 340.86499999999984 Td
+59.24 326.12499999999983 Td
 /F4.0 11 Tf
 <5b205d202b31> Tj
 ET
@@ -20797,7 +20808,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-59.24 326.12499999999983 Td
+59.24 311.3849999999998 Td
 /F4.0 11 Tf
 <5b205d202030> Tj
 ET
@@ -20808,7 +20819,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-59.24 311.3849999999998 Td
+59.24 296.6449999999998 Td
 /F4.0 11 Tf
 <5b205d202d31> Tj
 ET
@@ -20819,7 +20830,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-48.24 273.5059999999998 Td
+48.24 258.7659999999998 Td
 /F1.0 10.5 Tf
 <52656d656d62657220746f207570646174653a> Tj
 ET
@@ -20832,7 +20843,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-56.88050000000001 245.72599999999983 Td
+56.88050000000001 230.9859999999998 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -20845,7 +20856,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-66.24000000000001 245.72599999999983 Td
+66.24000000000001 230.9859999999998 Td
 /F1.0 10.5 Tf
 <7468652076657273696f6e206e756d6265722028312e31362e30206f7220776861746576657229> Tj
 ET
@@ -20858,7 +20869,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-56.88050000000001 223.94599999999983 Td
+56.88050000000001 209.2059999999998 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -20871,7 +20882,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-66.24000000000001 223.94599999999983 Td
+66.24000000000001 209.2059999999998 Td
 /F1.0 10.5 Tf
 <7468652072656c656173652063616e646964617465206e756d6265722028> Tj
 ET
@@ -20882,7 +20893,7 @@ ET
 0.694 0.129 0.275 SCN
 
 BT
-222.0285 223.94599999999983 Td
+222.0285 209.2059999999998 Td
 /F4.0 10.5 Tf
 <524331> Tj
 ET
@@ -20893,7 +20904,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-237.7785 223.94599999999983 Td
+237.7785 209.2059999999998 Td
 /F1.0 10.5 Tf
 <206f7220776861746576657229> Tj
 ET
@@ -20906,7 +20917,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-56.88050000000001 202.16599999999983 Td
+56.88050000000001 187.4259999999998 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -20919,7 +20930,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-66.24000000000001 202.16599999999983 Td
+66.24000000000001 187.4259999999998 Td
 /F1.0 10.5 Tf
 [<746865207265706f7369746f72792069642c2061732070726f76696465642062> 20.01953125 <79204e65787573206561726c6965722028>] TJ
 ET
@@ -20930,7 +20941,7 @@ ET
 0.694 0.129 0.275 SCN
 
 BT
-304.642294921875 202.16599999999983 Td
+304.642294921875 187.4259999999998 Td
 /F4.0 10.5 Tf
 <6f7267617061636865697369732d31307878> Tj
 ET
@@ -20941,7 +20952,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-399.142294921875 202.16599999999983 Td
+399.142294921875 187.4259999999998 Td
 /F1.0 10.5 Tf
 <206f7220776861746576657229> Tj
 ET
@@ -20952,7 +20963,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-48.24000000000001 174.38599999999983 Td
+48.24000000000001 159.6459999999998 Td
 /F1.0 10.5 Tf
 <4e6f746520746861742074686520656d61696c20616c736f207265666572656e636573207468652070726f63656475726520666f72206f7468657220636f6d6d69747465727320746f20> Tj
 ET
@@ -20963,7 +20974,7 @@ ET
 0.259 0.545 0.792 SCN
 
 BT
-417.6195 174.38599999999983 Td
+417.6195 159.6459999999998 Td
 /F1.0 10.5 Tf
 <766572696679207468652072656c65617365> Tj
 ET
@@ -20974,7 +20985,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-504.507 174.38599999999983 Td
+504.507 159.6459999999998 Td
 /F1.0 10.5 Tf
 <2e> Tj
 ET
@@ -21027,7 +21038,7 @@ endobj
 /URI (../cgcom/cgcom.pdf#_cgcom_verifying-releases)
 >>
 /Subtype /Link
-/Rect [417.6195 171.31999999999982 504.507 185.59999999999982]
+/Rect [417.6195 156.57999999999979 504.507 170.8599999999998]
 /Type /Annot
 >>
 endobj
@@ -57788,592 +57799,592 @@ xref
 0000974858 00000 n 
 0000974904 00000 n 
 0000974961 00000 n 
-0000984632 00000 n 
-0000984878 00000 n 
-0000985091 00000 n 
-0000998652 00000 n 
-0000998973 00000 n 
-0000999019 00000 n 
-0000999228 00000 n 
-0000999455 00000 n 
-0000999682 00000 n 
-0000999739 00000 n 
-0000999968 00000 n 
-0001000160 00000 n 
-0001000364 00000 n 
-0001000580 00000 n 
-0001000638 00000 n 
-0001011874 00000 n 
-0001012157 00000 n 
-0001012203 00000 n 
-0001012429 00000 n 
-0001012659 00000 n 
-0001012716 00000 n 
-0001012773 00000 n 
-0001012830 00000 n 
-0001012888 00000 n 
-0001013133 00000 n 
-0001013358 00000 n 
-0001030835 00000 n 
-0001031116 00000 n 
-0001031174 00000 n 
-0001031383 00000 n 
-0001031440 00000 n 
-0001031671 00000 n 
-0001045416 00000 n 
-0001045707 00000 n 
-0001045753 00000 n 
-0001045810 00000 n 
-0001045868 00000 n 
-0001046081 00000 n 
-0001046287 00000 n 
-0001046515 00000 n 
-0001046739 00000 n 
-0001046961 00000 n 
-0001047019 00000 n 
-0001056982 00000 n 
-0001057241 00000 n 
-0001057463 00000 n 
-0001057520 00000 n 
-0001068788 00000 n 
-0001069063 00000 n 
-0001069109 00000 n 
-0001069489 00000 n 
-0001069698 00000 n 
-0001069908 00000 n 
-0001070135 00000 n 
-0001070192 00000 n 
-0001070250 00000 n 
-0001078497 00000 n 
-0001078800 00000 n 
-0001078846 00000 n 
-0001079027 00000 n 
-0001146246 00000 n 
-0001146452 00000 n 
-0001146510 00000 n 
-0001146765 00000 n 
-0001146985 00000 n 
-0001147200 00000 n 
-0001156705 00000 n 
-0001156951 00000 n 
-0001157195 00000 n 
-0001167387 00000 n 
-0001167615 00000 n 
-0001178514 00000 n 
-0001178803 00000 n 
-0001178849 00000 n 
-0001178906 00000 n 
-0001178964 00000 n 
-0001179022 00000 n 
-0001179286 00000 n 
-0001179540 00000 n 
-0001179597 00000 n 
-0001179655 00000 n 
-0001179871 00000 n 
-0001179929 00000 n 
-0001191798 00000 n 
-0001192105 00000 n 
-0001192300 00000 n 
-0001192512 00000 n 
-0001192719 00000 n 
-0001192926 00000 n 
-0001193146 00000 n 
-0001193422 00000 n 
-0001193479 00000 n 
-0001193686 00000 n 
-0001205607 00000 n 
-0001205874 00000 n 
-0001205931 00000 n 
-0001206149 00000 n 
-0001206364 00000 n 
-0001206421 00000 n 
-0001206880 00000 n 
-0001206938 00000 n 
-0001221434 00000 n 
-0001221693 00000 n 
-0001221739 00000 n 
-0001222009 00000 n 
-0001222067 00000 n 
-0001222125 00000 n 
-0001235735 00000 n 
-0001236034 00000 n 
-0001236233 00000 n 
-0001236290 00000 n 
-0001236535 00000 n 
-0001236764 00000 n 
-0001236822 00000 n 
-0001236880 00000 n 
-0001237094 00000 n 
-0001237307 00000 n 
-0001237365 00000 n 
-0001238467 00000 n 
-0001238723 00000 n 
-0001238781 00000 n 
-0001252146 00000 n 
-0001252426 00000 n 
-0001252483 00000 n 
-0001252697 00000 n 
-0001252953 00000 n 
-0001268421 00000 n 
-0001268709 00000 n 
-0001268980 00000 n 
-0001269038 00000 n 
-0001269241 00000 n 
-0001269496 00000 n 
-0001285758 00000 n 
-0001286025 00000 n 
-0001286329 00000 n 
-0001286599 00000 n 
-0001296415 00000 n 
-0001296656 00000 n 
-0001296702 00000 n 
-0001307428 00000 n 
-0001307703 00000 n 
-0001307749 00000 n 
-0001307958 00000 n 
-0001308168 00000 n 
-0001308395 00000 n 
-0001308452 00000 n 
-0001308510 00000 n 
-0001313600 00000 n 
-0001313859 00000 n 
-0001313905 00000 n 
-0001314121 00000 n 
-0001314178 00000 n 
-0001329585 00000 n 
-0001329865 00000 n 
-0001329911 00000 n 
-0001329968 00000 n 
-0001330221 00000 n 
-0001330440 00000 n 
-0001330497 00000 n 
-0001331149 00000 n 
-0001335311 00000 n 
-0001335583 00000 n 
-0001335629 00000 n 
-0001335846 00000 n 
-0001349121 00000 n 
-0001349425 00000 n 
-0001349471 00000 n 
-0001349694 00000 n 
-0001349889 00000 n 
-0001350079 00000 n 
-0001350125 00000 n 
-0001350320 00000 n 
-0001350517 00000 n 
-0001350575 00000 n 
-0001350633 00000 n 
-0001359643 00000 n 
-0001359884 00000 n 
-0001359930 00000 n 
-0001374794 00000 n 
-0001375109 00000 n 
-0001375155 00000 n 
-0001375366 00000 n 
-0001375564 00000 n 
-0001375764 00000 n 
-0001375965 00000 n 
-0001376204 00000 n 
-0001376413 00000 n 
-0001376470 00000 n 
-0001376710 00000 n 
-0001376944 00000 n 
-0001377002 00000 n 
-0001390002 00000 n 
-0001390288 00000 n 
-0001390466 00000 n 
-0001390524 00000 n 
-0001401394 00000 n 
-0001401669 00000 n 
-0001401715 00000 n 
-0001401937 00000 n 
-0001402153 00000 n 
-0001402378 00000 n 
-0001402435 00000 n 
-0001402492 00000 n 
-0001412913 00000 n 
-0001413141 00000 n 
-0001425546 00000 n 
-0001425774 00000 n 
-0001434965 00000 n 
-0001435219 00000 n 
-0001435276 00000 n 
-0001443265 00000 n 
-0001443506 00000 n 
-0001452974 00000 n 
-0001453233 00000 n 
-0001453291 00000 n 
-0001453533 00000 n 
-0001463057 00000 n 
-0001463285 00000 n 
-0001476175 00000 n 
-0001476466 00000 n 
-0001476512 00000 n 
-0001476570 00000 n 
-0001476776 00000 n 
-0001477027 00000 n 
-0001477274 00000 n 
-0001477481 00000 n 
-0001477714 00000 n 
-0001487066 00000 n 
-0001487333 00000 n 
-0001487379 00000 n 
-0001487436 00000 n 
-0001487646 00000 n 
-0001487703 00000 n 
-0001487936 00000 n 
-0001510430 00000 n 
-0001510658 00000 n 
-0001523230 00000 n 
-0001523505 00000 n 
-0001523562 00000 n 
-0001524019 00000 n 
-0001524230 00000 n 
-0001524288 00000 n 
-0001524346 00000 n 
-0001524872 00000 n 
-0001525113 00000 n 
-0001525336 00000 n 
-0001538013 00000 n 
-0001538254 00000 n 
-0001538300 00000 n 
-0001557231 00000 n 
-0001557543 00000 n 
-0001557589 00000 n 
-0001557787 00000 n 
-0001557844 00000 n 
-0001558096 00000 n 
-0001558153 00000 n 
-0001558370 00000 n 
-0001558575 00000 n 
-0001558783 00000 n 
-0001558840 00000 n 
-0001559054 00000 n 
-0001569515 00000 n 
-0001569782 00000 n 
-0001570023 00000 n 
-0001570239 00000 n 
-0001582997 00000 n 
-0001583288 00000 n 
-0001583334 00000 n 
-0001583391 00000 n 
-0001583448 00000 n 
-0001583633 00000 n 
-0001583690 00000 n 
-0001583953 00000 n 
-0001584010 00000 n 
-0001584212 00000 n 
-0001584434 00000 n 
-0001584651 00000 n 
-0001596579 00000 n 
-0001596838 00000 n 
-0001597044 00000 n 
-0001597090 00000 n 
-0001600967 00000 n 
-0001601234 00000 n 
-0001601280 00000 n 
-0001601495 00000 n 
-0001601700 00000 n 
-0001611954 00000 n 
-0001612263 00000 n 
-0001612309 00000 n 
-0001612498 00000 n 
-0001612555 00000 n 
-0001612794 00000 n 
-0001613045 00000 n 
-0001613103 00000 n 
-0001613321 00000 n 
-0001613378 00000 n 
-0001620810 00000 n 
-0001621064 00000 n 
-0001621110 00000 n 
-0001632071 00000 n 
-0001632343 00000 n 
-0001632389 00000 n 
-0001632848 00000 n 
-0001633094 00000 n 
-0001633140 00000 n 
-0001633198 00000 n 
-0001645343 00000 n 
-0001645628 00000 n 
-0001645829 00000 n 
-0001645886 00000 n 
-0001657766 00000 n 
-0001658051 00000 n 
-0001658097 00000 n 
-0001658154 00000 n 
-0001658352 00000 n 
-0001658410 00000 n 
-0001660822 00000 n 
-0001661050 00000 n 
-0001661170 00000 n 
-0001661291 00000 n 
-0001661416 00000 n 
-0001661542 00000 n 
-0001661688 00000 n 
-0001661836 00000 n 
-0001661969 00000 n 
-0001662104 00000 n 
-0001662238 00000 n 
-0001662374 00000 n 
-0001662527 00000 n 
-0001662681 00000 n 
-0001662832 00000 n 
-0001662985 00000 n 
-0001663133 00000 n 
-0001663282 00000 n 
-0001663433 00000 n 
-0001663575 00000 n 
-0001663736 00000 n 
-0001663890 00000 n 
-0001664048 00000 n 
-0001664208 00000 n 
-0001664385 00000 n 
-0001664563 00000 n 
-0001664748 00000 n 
-0001664935 00000 n 
-0001665121 00000 n 
-0001665309 00000 n 
-0001665483 00000 n 
-0001665659 00000 n 
-0001665843 00000 n 
-0001666038 00000 n 
-0001666234 00000 n 
-0001666430 00000 n 
-0001666614 00000 n 
-0001666800 00000 n 
-0001666976 00000 n 
-0001667154 00000 n 
-0001667323 00000 n 
-0001667494 00000 n 
-0001667674 00000 n 
-0001667856 00000 n 
-0001668032 00000 n 
-0001668218 00000 n 
-0001668417 00000 n 
-0001668616 00000 n 
-0001668795 00000 n 
-0001668976 00000 n 
-0001669139 00000 n 
-0001669304 00000 n 
-0001669461 00000 n 
-0001669620 00000 n 
-0001669795 00000 n 
-0001669970 00000 n 
-0001670120 00000 n 
-0001670280 00000 n 
-0001670427 00000 n 
-0001670585 00000 n 
-0001670756 00000 n 
-0001670927 00000 n 
-0001671080 00000 n 
-0001671243 00000 n 
-0001671388 00000 n 
-0001671544 00000 n 
-0001671693 00000 n 
-0001671852 00000 n 
-0001672009 00000 n 
-0001672176 00000 n 
-0001672322 00000 n 
-0001672478 00000 n 
-0001672648 00000 n 
-0001672818 00000 n 
-0001672972 00000 n 
-0001673136 00000 n 
-0001673285 00000 n 
-0001673445 00000 n 
-0001673581 00000 n 
-0001673727 00000 n 
-0001673916 00000 n 
-0001674105 00000 n 
-0001674271 00000 n 
-0001674437 00000 n 
-0001674587 00000 n 
-0001674747 00000 n 
-0001674908 00000 n 
-0001675069 00000 n 
-0001675236 00000 n 
-0001675403 00000 n 
+0000984773 00000 n 
+0000985019 00000 n 
+0000985231 00000 n 
+0000998792 00000 n 
+0000999113 00000 n 
+0000999159 00000 n 
+0000999368 00000 n 
+0000999595 00000 n 
+0000999822 00000 n 
+0000999879 00000 n 
+0001000108 00000 n 
+0001000300 00000 n 
+0001000504 00000 n 
+0001000720 00000 n 
+0001000778 00000 n 
+0001012014 00000 n 
+0001012297 00000 n 
+0001012343 00000 n 
+0001012569 00000 n 
+0001012799 00000 n 
+0001012856 00000 n 
+0001012913 00000 n 
+0001012970 00000 n 
+0001013028 00000 n 
+0001013273 00000 n 
+0001013498 00000 n 
+0001030975 00000 n 
+0001031256 00000 n 
+0001031314 00000 n 
+0001031523 00000 n 
+0001031580 00000 n 
+0001031811 00000 n 
+0001045556 00000 n 
+0001045847 00000 n 
+0001045893 00000 n 
+0001045950 00000 n 
+0001046008 00000 n 
+0001046221 00000 n 
+0001046427 00000 n 
+0001046655 00000 n 
+0001046879 00000 n 
+0001047101 00000 n 
+0001047159 00000 n 
+0001057122 00000 n 
+0001057381 00000 n 
+0001057603 00000 n 
+0001057660 00000 n 
+0001068928 00000 n 
+0001069203 00000 n 
+0001069249 00000 n 
+0001069629 00000 n 
+0001069838 00000 n 
+0001070048 00000 n 
+0001070275 00000 n 
+0001070332 00000 n 
+0001070390 00000 n 
+0001078637 00000 n 
+0001078940 00000 n 
+0001078986 00000 n 
+0001079167 00000 n 
+0001146386 00000 n 
+0001146592 00000 n 
+0001146650 00000 n 
+0001146905 00000 n 
+0001147125 00000 n 
+0001147340 00000 n 
+0001156845 00000 n 
+0001157091 00000 n 
+0001157335 00000 n 
+0001167527 00000 n 
+0001167755 00000 n 
+0001178654 00000 n 
+0001178943 00000 n 
+0001178989 00000 n 
+0001179046 00000 n 
+0001179104 00000 n 
+0001179162 00000 n 
+0001179426 00000 n 
+0001179680 00000 n 
+0001179737 00000 n 
+0001179795 00000 n 
+0001180011 00000 n 
+0001180069 00000 n 
+0001191938 00000 n 
+0001192245 00000 n 
+0001192440 00000 n 
+0001192652 00000 n 
+0001192859 00000 n 
+0001193066 00000 n 
+0001193286 00000 n 
+0001193562 00000 n 
+0001193619 00000 n 
+0001193826 00000 n 
+0001205747 00000 n 
+0001206014 00000 n 
+0001206071 00000 n 
+0001206289 00000 n 
+0001206504 00000 n 
+0001206561 00000 n 
+0001207020 00000 n 
+0001207078 00000 n 
+0001221574 00000 n 
+0001221833 00000 n 
+0001221879 00000 n 
+0001222149 00000 n 
+0001222207 00000 n 
+0001222265 00000 n 
+0001235875 00000 n 
+0001236174 00000 n 
+0001236373 00000 n 
+0001236430 00000 n 
+0001236675 00000 n 
+0001236904 00000 n 
+0001236962 00000 n 
+0001237020 00000 n 
+0001237234 00000 n 
+0001237447 00000 n 
+0001237505 00000 n 
+0001238607 00000 n 
+0001238863 00000 n 
+0001238921 00000 n 
+0001252286 00000 n 
+0001252566 00000 n 
+0001252623 00000 n 
+0001252837 00000 n 
+0001253093 00000 n 
+0001268561 00000 n 
+0001268849 00000 n 
+0001269120 00000 n 
+0001269178 00000 n 
+0001269381 00000 n 
+0001269636 00000 n 
+0001285898 00000 n 
+0001286165 00000 n 
+0001286469 00000 n 
+0001286739 00000 n 
+0001296555 00000 n 
+0001296796 00000 n 
+0001296842 00000 n 
+0001307568 00000 n 
+0001307843 00000 n 
+0001307889 00000 n 
+0001308098 00000 n 
+0001308308 00000 n 
+0001308535 00000 n 
+0001308592 00000 n 
+0001308650 00000 n 
+0001313740 00000 n 
+0001313999 00000 n 
+0001314045 00000 n 
+0001314261 00000 n 
+0001314318 00000 n 
+0001329725 00000 n 
+0001330005 00000 n 
+0001330051 00000 n 
+0001330108 00000 n 
+0001330361 00000 n 
+0001330580 00000 n 
+0001330637 00000 n 
+0001331289 00000 n 
+0001335451 00000 n 
+0001335723 00000 n 
+0001335769 00000 n 
+0001335986 00000 n 
+0001349261 00000 n 
+0001349565 00000 n 
+0001349611 00000 n 
+0001349834 00000 n 
+0001350029 00000 n 
+0001350219 00000 n 
+0001350265 00000 n 
+0001350460 00000 n 
+0001350657 00000 n 
+0001350715 00000 n 
+0001350773 00000 n 
+0001359783 00000 n 
+0001360024 00000 n 
+0001360070 00000 n 
+0001374934 00000 n 
+0001375249 00000 n 
+0001375295 00000 n 
+0001375506 00000 n 
+0001375704 00000 n 
+0001375904 00000 n 
+0001376105 00000 n 
+0001376344 00000 n 
+0001376553 00000 n 
+0001376610 00000 n 
+0001376850 00000 n 
+0001377084 00000 n 
+0001377142 00000 n 
+0001390142 00000 n 
+0001390428 00000 n 
+0001390606 00000 n 
+0001390664 00000 n 
+0001401534 00000 n 
+0001401809 00000 n 
+0001401855 00000 n 
+0001402077 00000 n 
+0001402293 00000 n 
+0001402518 00000 n 
+0001402575 00000 n 
+0001402632 00000 n 
+0001413053 00000 n 
+0001413281 00000 n 
+0001425686 00000 n 
+0001425914 00000 n 
+0001435105 00000 n 
+0001435359 00000 n 
+0001435416 00000 n 
+0001443405 00000 n 
+0001443646 00000 n 
+0001453114 00000 n 
+0001453373 00000 n 
+0001453431 00000 n 
+0001453673 00000 n 
+0001463197 00000 n 
+0001463425 00000 n 
+0001476315 00000 n 
+0001476606 00000 n 
+0001476652 00000 n 
+0001476710 00000 n 
+0001476916 00000 n 
+0001477167 00000 n 
+0001477414 00000 n 
+0001477621 00000 n 
+0001477854 00000 n 
+0001487206 00000 n 
+0001487473 00000 n 
+0001487519 00000 n 
+0001487576 00000 n 
+0001487786 00000 n 
+0001487843 00000 n 
+0001488076 00000 n 
+0001510570 00000 n 
+0001510798 00000 n 
+0001523370 00000 n 
+0001523645 00000 n 
+0001523702 00000 n 
+0001524159 00000 n 
+0001524370 00000 n 
+0001524428 00000 n 
+0001524486 00000 n 
+0001525012 00000 n 
+0001525253 00000 n 
+0001525476 00000 n 
+0001538153 00000 n 
+0001538394 00000 n 
+0001538440 00000 n 
+0001557371 00000 n 
+0001557683 00000 n 
+0001557729 00000 n 
+0001557927 00000 n 
+0001557984 00000 n 
+0001558236 00000 n 
+0001558293 00000 n 
+0001558510 00000 n 
+0001558715 00000 n 
+0001558923 00000 n 
+0001558980 00000 n 
+0001559194 00000 n 
+0001569655 00000 n 
+0001569922 00000 n 
+0001570163 00000 n 
+0001570379 00000 n 
+0001583137 00000 n 
+0001583428 00000 n 
+0001583474 00000 n 
+0001583531 00000 n 
+0001583588 00000 n 
+0001583773 00000 n 
+0001583830 00000 n 
+0001584093 00000 n 
+0001584150 00000 n 
+0001584352 00000 n 
+0001584574 00000 n 
+0001584791 00000 n 
+0001596719 00000 n 
+0001596978 00000 n 
+0001597184 00000 n 
+0001597230 00000 n 
+0001601107 00000 n 
+0001601374 00000 n 
+0001601420 00000 n 
+0001601635 00000 n 
+0001601840 00000 n 
+0001612094 00000 n 
+0001612403 00000 n 
+0001612449 00000 n 
+0001612638 00000 n 
+0001612695 00000 n 
+0001612934 00000 n 
+0001613185 00000 n 
+0001613243 00000 n 
+0001613461 00000 n 
+0001613518 00000 n 
+0001620950 00000 n 
+0001621204 00000 n 
+0001621250 00000 n 
+0001632211 00000 n 
+0001632483 00000 n 
+0001632529 00000 n 
+0001632988 00000 n 
+0001633234 00000 n 
+0001633280 00000 n 
+0001633338 00000 n 
+0001645483 00000 n 
+0001645768 00000 n 
+0001645969 00000 n 
+0001646026 00000 n 
+0001657906 00000 n 
+0001658191 00000 n 
+0001658237 00000 n 
+0001658294 00000 n 
+0001658492 00000 n 
+0001658550 00000 n 
+0001660962 00000 n 
+0001661190 00000 n 
+0001661310 00000 n 
+0001661431 00000 n 
+0001661556 00000 n 
+0001661682 00000 n 
+0001661828 00000 n 
+0001661976 00000 n 
+0001662109 00000 n 
+0001662244 00000 n 
+0001662378 00000 n 
+0001662514 00000 n 
+0001662667 00000 n 
+0001662821 00000 n 
+0001662972 00000 n 
+0001663125 00000 n 
+0001663273 00000 n 
+0001663422 00000 n 
+0001663573 00000 n 
+0001663715 00000 n 
+0001663876 00000 n 
+0001664030 00000 n 
+0001664188 00000 n 
+0001664348 00000 n 
+0001664525 00000 n 
+0001664703 00000 n 
+0001664888 00000 n 
+0001665075 00000 n 
+0001665261 00000 n 
+0001665449 00000 n 
+0001665623 00000 n 
+0001665799 00000 n 
+0001665983 00000 n 
+0001666178 00000 n 
+0001666374 00000 n 
+0001666570 00000 n 
+0001666754 00000 n 
+0001666940 00000 n 
+0001667116 00000 n 
+0001667294 00000 n 
+0001667463 00000 n 
+0001667634 00000 n 
+0001667814 00000 n 
+0001667996 00000 n 
+0001668172 00000 n 
+0001668358 00000 n 
+0001668557 00000 n 
+0001668756 00000 n 
+0001668935 00000 n 
+0001669116 00000 n 
+0001669279 00000 n 
+0001669444 00000 n 
+0001669601 00000 n 
+0001669760 00000 n 
+0001669935 00000 n 
+0001670110 00000 n 
+0001670260 00000 n 
+0001670420 00000 n 
+0001670567 00000 n 
+0001670725 00000 n 
+0001670896 00000 n 
+0001671067 00000 n 
+0001671220 00000 n 
+0001671383 00000 n 
+0001671528 00000 n 
+0001671684 00000 n 
+0001671833 00000 n 
+0001671992 00000 n 
+0001672149 00000 n 
+0001672316 00000 n 
+0001672462 00000 n 
+0001672618 00000 n 
+0001672788 00000 n 
+0001672958 00000 n 
+0001673112 00000 n 
+0001673276 00000 n 
+0001673425 00000 n 
+0001673585 00000 n 
+0001673721 00000 n 
+0001673867 00000 n 
+0001674056 00000 n 
+0001674245 00000 n 
+0001674411 00000 n 
+0001674577 00000 n 
+0001674727 00000 n 
+0001674887 00000 n 
+0001675048 00000 n 
+0001675209 00000 n 
+0001675376 00000 n 
 0001675543 00000 n 
-0001675693 00000 n 
-0001675863 00000 n 
-0001676044 00000 n 
-0001676194 00000 n 
-0001676354 00000 n 
-0001676501 00000 n 
-0001676658 00000 n 
-0001676807 00000 n 
-0001676958 00000 n 
-0001677146 00000 n 
-0001677334 00000 n 
-0001677484 00000 n 
-0001677644 00000 n 
-0001677793 00000 n 
-0001677952 00000 n 
-0001678104 00000 n 
-0001678256 00000 n 
-0001678422 00000 n 
-0001678600 00000 n 
-0001678748 00000 n 
-0001678907 00000 n 
-0001679063 00000 n 
-0001679229 00000 n 
-0001679399 00000 n 
-0001679569 00000 n 
-0001679737 00000 n 
-0001679905 00000 n 
-0001680064 00000 n 
-0001680235 00000 n 
-0001680392 00000 n 
-0001680552 00000 n 
-0001680711 00000 n 
-0001680873 00000 n 
-0001681052 00000 n 
-0001681231 00000 n 
-0001681386 00000 n 
-0001681543 00000 n 
-0001681732 00000 n 
-0001681934 00000 n 
-0001682122 00000 n 
-0001682312 00000 n 
-0001682513 00000 n 
-0001682722 00000 n 
-0001682887 00000 n 
-0001683062 00000 n 
-0001683224 00000 n 
-0001683396 00000 n 
-0001683561 00000 n 
-0001683726 00000 n 
-0001683891 00000 n 
-0001684069 00000 n 
-0001684244 00000 n 
-0001684395 00000 n 
-0001684557 00000 n 
-0001684733 00000 n 
-0001684911 00000 n 
-0001685072 00000 n 
-0001685243 00000 n 
-0001685394 00000 n 
-0001685555 00000 n 
-0001685698 00000 n 
-0001685852 00000 n 
-0001686023 00000 n 
-0001686194 00000 n 
-0001686361 00000 n 
-0001686528 00000 n 
-0001686815 00000 n 
-0001686893 00000 n 
-0001687070 00000 n 
-0001687262 00000 n 
-0001687527 00000 n 
-0001687702 00000 n 
-0001687963 00000 n 
-0001688144 00000 n 
-0001688329 00000 n 
-0001688614 00000 n 
-0001688823 00000 n 
-0001689030 00000 n 
-0001689209 00000 n 
-0001689422 00000 n 
-0001689687 00000 n 
-0001689892 00000 n 
-0001690147 00000 n 
-0001690403 00000 n 
-0001690614 00000 n 
-0001690855 00000 n 
-0001691096 00000 n 
-0001691304 00000 n 
-0001691459 00000 n 
-0001691733 00000 n 
-0001691915 00000 n 
-0001692124 00000 n 
-0001692373 00000 n 
-0001692626 00000 n 
-0001692859 00000 n 
-0001693057 00000 n 
-0001693356 00000 n 
-0001693550 00000 n 
-0001693751 00000 n 
-0001693992 00000 n 
-0001694221 00000 n 
-0001694410 00000 n 
-0001694623 00000 n 
-0001694859 00000 n 
-0001695051 00000 n 
-0001695299 00000 n 
-0001695536 00000 n 
-0001695756 00000 n 
-0001695965 00000 n 
-0001696212 00000 n 
-0001696518 00000 n 
-0001696712 00000 n 
-0001696933 00000 n 
-0001697166 00000 n 
-0001697328 00000 n 
-0001697594 00000 n 
-0001697788 00000 n 
-0001697992 00000 n 
-0001698147 00000 n 
-0001698409 00000 n 
-0001698592 00000 n 
-0001698797 00000 n 
-0001698968 00000 n 
-0001699246 00000 n 
-0001699448 00000 n 
-0001699701 00000 n 
-0001699952 00000 n 
-0001700210 00000 n 
-0001700456 00000 n 
-0001700672 00000 n 
-0001700900 00000 n 
-0001701193 00000 n 
-0001701386 00000 n 
-0001701731 00000 n 
-0001702054 00000 n 
-0001702356 00000 n 
-0001702610 00000 n 
-0001702842 00000 n 
-0001703060 00000 n 
-0001703294 00000 n 
-0001703508 00000 n 
-0001703694 00000 n 
-0001703934 00000 n 
-0001704108 00000 n 
-0001704365 00000 n 
-0001704592 00000 n 
-0001705305 00000 n 
-0001715451 00000 n 
-0001715667 00000 n 
-0001717030 00000 n 
-0001718074 00000 n 
-0001726889 00000 n 
-0001727110 00000 n 
-0001728473 00000 n 
-0001729538 00000 n 
-0001730987 00000 n 
-0001731198 00000 n 
-0001731518 00000 n 
-0001732434 00000 n 
-0001738455 00000 n 
-0001738669 00000 n 
-0001740032 00000 n 
-0001741078 00000 n 
-0001742751 00000 n 
-0001742965 00000 n 
-0001743277 00000 n 
-0001744415 00000 n 
-0001745810 00000 n 
-0001746028 00000 n 
-0001747391 00000 n 
-0001748530 00000 n 
-0001751028 00000 n 
-0001751254 00000 n 
-0001752617 00000 n 
+0001675683 00000 n 
+0001675833 00000 n 
+0001676003 00000 n 
+0001676184 00000 n 
+0001676334 00000 n 
+0001676494 00000 n 
+0001676641 00000 n 
+0001676798 00000 n 
+0001676947 00000 n 
+0001677098 00000 n 
+0001677286 00000 n 
+0001677474 00000 n 
+0001677624 00000 n 
+0001677784 00000 n 
+0001677933 00000 n 
+0001678092 00000 n 
+0001678244 00000 n 
+0001678396 00000 n 
+0001678562 00000 n 
+0001678740 00000 n 
+0001678888 00000 n 
+0001679047 00000 n 
+0001679203 00000 n 
+0001679369 00000 n 
+0001679539 00000 n 
+0001679709 00000 n 
+0001679877 00000 n 
+0001680045 00000 n 
+0001680204 00000 n 
+0001680375 00000 n 
+0001680532 00000 n 
+0001680692 00000 n 
+0001680851 00000 n 
+0001681013 00000 n 
+0001681192 00000 n 
+0001681371 00000 n 
+0001681526 00000 n 
+0001681683 00000 n 
+0001681872 00000 n 
+0001682074 00000 n 
+0001682262 00000 n 
+0001682452 00000 n 
+0001682653 00000 n 
+0001682862 00000 n 
+0001683027 00000 n 
+0001683202 00000 n 
+0001683364 00000 n 
+0001683536 00000 n 
+0001683701 00000 n 
+0001683866 00000 n 
+0001684031 00000 n 
+0001684209 00000 n 
+0001684384 00000 n 
+0001684535 00000 n 
+0001684697 00000 n 
+0001684873 00000 n 
+0001685051 00000 n 
+0001685212 00000 n 
+0001685383 00000 n 
+0001685534 00000 n 
+0001685695 00000 n 
+0001685838 00000 n 
+0001685992 00000 n 
+0001686163 00000 n 
+0001686334 00000 n 
+0001686501 00000 n 
+0001686668 00000 n 
+0001686955 00000 n 
+0001687033 00000 n 
+0001687210 00000 n 
+0001687402 00000 n 
+0001687667 00000 n 
+0001687842 00000 n 
+0001688103 00000 n 
+0001688284 00000 n 
+0001688469 00000 n 
+0001688754 00000 n 
+0001688963 00000 n 
+0001689170 00000 n 
+0001689349 00000 n 
+0001689562 00000 n 
+0001689827 00000 n 
+0001690032 00000 n 
+0001690287 00000 n 
+0001690543 00000 n 
+0001690754 00000 n 
+0001690995 00000 n 
+0001691236 00000 n 
+0001691444 00000 n 
+0001691599 00000 n 
+0001691873 00000 n 
+0001692055 00000 n 
+0001692264 00000 n 
+0001692513 00000 n 
+0001692766 00000 n 
+0001692999 00000 n 
+0001693197 00000 n 
+0001693496 00000 n 
+0001693690 00000 n 
+0001693891 00000 n 
+0001694132 00000 n 
+0001694361 00000 n 
+0001694550 00000 n 
+0001694763 00000 n 
+0001694999 00000 n 
+0001695191 00000 n 
+0001695439 00000 n 
+0001695676 00000 n 
+0001695896 00000 n 
+0001696105 00000 n 
+0001696352 00000 n 
+0001696658 00000 n 
+0001696852 00000 n 
+0001697073 00000 n 
+0001697306 00000 n 
+0001697468 00000 n 
+0001697734 00000 n 
+0001697928 00000 n 
+0001698132 00000 n 
+0001698287 00000 n 
+0001698549 00000 n 
+0001698732 00000 n 
+0001698937 00000 n 
+0001699108 00000 n 
+0001699386 00000 n 
+0001699588 00000 n 
+0001699841 00000 n 
+0001700092 00000 n 
+0001700350 00000 n 
+0001700596 00000 n 
+0001700812 00000 n 
+0001701040 00000 n 
+0001701333 00000 n 
+0001701526 00000 n 
+0001701871 00000 n 
+0001702194 00000 n 
+0001702496 00000 n 
+0001702750 00000 n 
+0001702982 00000 n 
+0001703200 00000 n 
+0001703434 00000 n 
+0001703648 00000 n 
+0001703834 00000 n 
+0001704074 00000 n 
+0001704248 00000 n 
+0001704505 00000 n 
+0001704732 00000 n 
+0001705445 00000 n 
+0001715591 00000 n 
+0001715807 00000 n 
+0001717170 00000 n 
+0001718214 00000 n 
+0001727029 00000 n 
+0001727250 00000 n 
+0001728613 00000 n 
+0001729678 00000 n 
+0001731127 00000 n 
+0001731338 00000 n 
+0001731658 00000 n 
+0001732574 00000 n 
+0001738595 00000 n 
+0001738809 00000 n 
+0001740172 00000 n 
+0001741218 00000 n 
+0001742891 00000 n 
+0001743105 00000 n 
+0001743417 00000 n 
+0001744555 00000 n 
+0001745950 00000 n 
+0001746168 00000 n 
+0001747531 00000 n 
+0001748670 00000 n 
+0001751168 00000 n 
+0001751394 00000 n 
+0001752757 00000 n 
 trailer
 << /Size 764
 /Root 2 0 R
 /Info 1 0 R
 >>
 startxref
-1753740
+1753880
 %%EOF


[4/9] isis-site git commit: ISIS-1712: fixes tiny error in relesae guide

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/fa1a7ca4/content/guides/cgcom/cgcom.html
----------------------------------------------------------------------
diff --git a/content/guides/cgcom/cgcom.html b/content/guides/cgcom/cgcom.html
index b0f2312..813f9fb 100644
--- a/content/guides/cgcom/cgcom.html
+++ b/content/guides/cgcom/cgcom.html
@@ -306,8 +306,8 @@ table.CodeRay td.code>pre{padding:0}
          </div> 
          <div class="ulist"> 
           <ul> 
-           <li> <p><a href="../dg/dg.html">Developers' Guide</a> (this guide)</p> </li> 
-           <li> <p><a href="../cgcom/cgcom.html">Committers' Guide</a> (release procedures and related practices)</p> </li> 
+           <li> <p><a href="../dg/dg.html">Developers' Guide</a> (how to set up a development environment for Apache Isis and contribute back to the project)</p> </li> 
+           <li> <p><a href="../cgcom/cgcom.html">Committers' Guide</a> (this guide)</p> </li> 
           </ul> 
          </div> 
          <div class="paragraph"> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fa1a7ca4/content/guides/cgcom/cgcom.pdf
----------------------------------------------------------------------
diff --git a/content/guides/cgcom/cgcom.pdf b/content/guides/cgcom/cgcom.pdf
index 105ce8f..c28f775 100644
--- a/content/guides/cgcom/cgcom.pdf
+++ b/content/guides/cgcom/cgcom.pdf
@@ -4,8 +4,8 @@
 << /Title (Committers' Guide)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20170922120848+01'00')
-/ModDate (D:20170922120848+01'00')
+/CreationDate (D:20170922130444+01'00')
+/ModDate (D:20170922130444+01'00')
 >>
 endobj
 2 0 obj
@@ -3220,7 +3220,7 @@ endobj
 >>
 endobj
 13 0 obj
-<< /Length 8662
+<< /Length 8937
 >>
 stream
 q
@@ -3689,21 +3689,40 @@ ET
 0.259 0.545 0.792 scn
 0.259 0.545 0.792 SCN
 
+1.390 Tw
+
 BT
 66.24000000000001 247.5260000000007 Td
 /F1.0 10.5 Tf
 <446576656c6f7065727327204775696465> Tj
 ET
 
+
+0.000 Tw
 0.000 0.000 0.000 SCN
 0.000 0.000 0.000 scn
 0.200 0.200 0.200 scn
 0.200 0.200 0.200 SCN
 
+1.390 Tw
+
 BT
-156.81300000000002 247.5260000000007 Td
+158.2034230769231 247.5260000000007 Td
 /F1.0 10.5 Tf
-<20287468697320677569646529> Tj
+<2028686f7720746f20736574207570206120646576656c6f706d656e7420656e7669726f6e6d656e7420666f7220417061636865204973697320616e6420636f6e74726962757465> Tj
+ET
+
+
+0.000 Tw
+0.000 0.000 0.000 SCN
+0.000 0.000 0.000 scn
+0.200 0.200 0.200 scn
+0.200 0.200 0.200 SCN
+
+BT
+66.24000000000001 231.7460000000007 Td
+/F1.0 10.5 Tf
+<6261636b20746f207468652070726f6a65637429> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -3714,7 +3733,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-56.88050000000001 225.7460000000007 Td
+56.88050000000001 209.9660000000007 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -3727,7 +3746,7 @@ ET
 0.259 0.545 0.792 SCN
 
 BT
-66.24000000000001 225.7460000000007 Td
+66.24000000000001 209.9660000000007 Td
 /F1.0 10.5 Tf
 <436f6d6d69747465727327204775696465> Tj
 ET
@@ -3738,9 +3757,9 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-159.1755 225.7460000000007 Td
+159.1755 209.9660000000007 Td
 /F1.0 10.5 Tf
-[<202872656c656173652070726f6365647572657320616e642072656c61746564207072> 20.01953125 <6163746963657329>] TJ
+<20287468697320677569646529> Tj
 ET
 
 0.000 0.000 0.000 SCN
@@ -3749,7 +3768,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-48.24000000000001 197.9660000000007 Td
+48.24000000000001 182.1860000000007 Td
 /F1.0 10.5 Tf
 <546869732067756964652070726f76696465732067756964616e636520666f7220417061636865204973697327206f776e20636f6d6d6974746572732e> Tj
 ET
@@ -3971,7 +3990,7 @@ endobj
 /URI (../dg/dg.pdf)
 >>
 /Subtype /Link
-/Rect [66.24000000000001 244.4600000000007 156.81300000000002 258.7400000000007]
+/Rect [66.24000000000001 244.4600000000007 158.2034230769231 258.7400000000007]
 /Type /Annot
 >>
 endobj
@@ -3982,7 +4001,7 @@ endobj
 /URI (../cgcom/cgcom.pdf)
 >>
 /Subtype /Link
-/Rect [66.24000000000001 222.6800000000007 159.1755 236.9600000000007]
+/Rect [66.24000000000001 206.9000000000007 159.1755 221.1800000000007]
 /Type /Annot
 >>
 endobj
@@ -57630,761 +57649,761 @@ xref
 0000034952 00000 n 
 0000067337 00000 n 
 0000068174 00000 n 
-0000076889 00000 n 
-0000077230 00000 n 
-0000077274 00000 n 
-0000077323 00000 n 
-0000077439 00000 n 
-0000077612 00000 n 
-0000077667 00000 n 
-0000077871 00000 n 
-0000078071 00000 n 
-0000078275 00000 n 
-0000078468 00000 n 
-0000078672 00000 n 
-0000078877 00000 n 
-0000079082 00000 n 
-0000079286 00000 n 
-0000079491 00000 n 
-0000079696 00000 n 
-0000079900 00000 n 
-0000080095 00000 n 
-0000080299 00000 n 
-0000080497 00000 n 
-0000080691 00000 n 
-0000090932 00000 n 
-0000091184 00000 n 
-0000091228 00000 n 
-0000091283 00000 n 
-0000091453 00000 n 
-0000091508 00000 n 
-0000091563 00000 n 
-0000091738 00000 n 
-0000091794 00000 n 
-0000097597 00000 n 
-0000097860 00000 n 
-0000097904 00000 n 
-0000098164 00000 n 
-0000098404 00000 n 
-0000109134 00000 n 
-0000109397 00000 n 
-0000109441 00000 n 
-0000109496 00000 n 
-0000109701 00000 n 
-0000109756 00000 n 
-0000109970 00000 n 
-0000110025 00000 n 
-0000119364 00000 n 
-0000119603 00000 n 
-0000119658 00000 n 
-0000122904 00000 n 
-0000123158 00000 n 
-0000140938 00000 n 
-0000141116 00000 n 
-0000155093 00000 n 
-0000155412 00000 n 
-0000155456 00000 n 
-0000155676 00000 n 
-0000155902 00000 n 
-0000156128 00000 n 
-0000156369 00000 n 
-0000156587 00000 n 
-0000156816 00000 n 
-0000157021 00000 n 
-0000157246 00000 n 
-0000157301 00000 n 
-0000157493 00000 n 
-0000157712 00000 n 
+0000077164 00000 n 
+0000077505 00000 n 
+0000077549 00000 n 
+0000077598 00000 n 
+0000077714 00000 n 
+0000077887 00000 n 
+0000077942 00000 n 
+0000078146 00000 n 
+0000078346 00000 n 
+0000078550 00000 n 
+0000078743 00000 n 
+0000078947 00000 n 
+0000079152 00000 n 
+0000079357 00000 n 
+0000079561 00000 n 
+0000079766 00000 n 
+0000079971 00000 n 
+0000080175 00000 n 
+0000080370 00000 n 
+0000080574 00000 n 
+0000080771 00000 n 
+0000080965 00000 n 
+0000091206 00000 n 
+0000091458 00000 n 
+0000091502 00000 n 
+0000091557 00000 n 
+0000091727 00000 n 
+0000091782 00000 n 
+0000091837 00000 n 
+0000092012 00000 n 
+0000092068 00000 n 
+0000097871 00000 n 
+0000098134 00000 n 
+0000098178 00000 n 
+0000098438 00000 n 
+0000098678 00000 n 
+0000109408 00000 n 
+0000109671 00000 n 
+0000109715 00000 n 
+0000109770 00000 n 
+0000109975 00000 n 
+0000110030 00000 n 
+0000110244 00000 n 
+0000110299 00000 n 
+0000119638 00000 n 
+0000119877 00000 n 
+0000119932 00000 n 
+0000123178 00000 n 
+0000123432 00000 n 
+0000141212 00000 n 
+0000141390 00000 n 
+0000155367 00000 n 
+0000155686 00000 n 
+0000155730 00000 n 
+0000155950 00000 n 
+0000156176 00000 n 
+0000156402 00000 n 
+0000156643 00000 n 
+0000156861 00000 n 
+0000157090 00000 n 
+0000157295 00000 n 
+0000157520 00000 n 
+0000157575 00000 n 
 0000157767 00000 n 
-0000173932 00000 n 
-0000174221 00000 n 
-0000174396 00000 n 
-0000174637 00000 n 
-0000174864 00000 n 
-0000174920 00000 n 
-0000189776 00000 n 
-0000190045 00000 n 
-0000190100 00000 n 
-0000190156 00000 n 
-0000190212 00000 n 
-0000190414 00000 n 
-0000208531 00000 n 
-0000208770 00000 n 
-0000208826 00000 n 
-0000209664 00000 n 
-0000210347 00000 n 
-0000222227 00000 n 
-0000222519 00000 n 
-0000222563 00000 n 
-0000222618 00000 n 
-0000222675 00000 n 
-0000222851 00000 n 
-0000223103 00000 n 
-0000223387 00000 n 
-0000236271 00000 n 
-0000236525 00000 n 
-0000236571 00000 n 
-0000236628 00000 n 
-0000249687 00000 n 
-0000249946 00000 n 
-0000249992 00000 n 
-0000250185 00000 n 
-0000265510 00000 n 
-0000265791 00000 n 
-0000265837 00000 n 
-0000265894 00000 n 
-0000265951 00000 n 
-0000266009 00000 n 
-0000266185 00000 n 
-0000278784 00000 n 
-0000279025 00000 n 
-0000286718 00000 n 
-0000287010 00000 n 
-0000322002 00000 n 
-0000323736 00000 n 
-0000323925 00000 n 
-0000324135 00000 n 
-0000324192 00000 n 
-0000325239 00000 n 
-0000336451 00000 n 
-0000336706 00000 n 
-0000336752 00000 n 
-0000336798 00000 n 
-0000336856 00000 n 
-0000349428 00000 n 
-0000349683 00000 n 
-0000349729 00000 n 
-0000349786 00000 n 
-0000349843 00000 n 
-0000361820 00000 n 
-0000362079 00000 n 
-0000362290 00000 n 
-0000362348 00000 n 
-0000362406 00000 n 
-0000373801 00000 n 
-0000374056 00000 n 
-0000374113 00000 n 
-0000374171 00000 n 
-0000375190 00000 n 
-0000378556 00000 n 
-0000378835 00000 n 
-0000378881 00000 n 
-0000379085 00000 n 
-0000451513 00000 n 
-0000451718 00000 n 
-0000551916 00000 n 
-0000554483 00000 n 
-0000554741 00000 n 
-0000554935 00000 n 
-0000658687 00000 n 
-0000659307 00000 n 
-0000659552 00000 n 
-0000659746 00000 n 
-0000762312 00000 n 
-0000763001 00000 n 
-0000763246 00000 n 
-0000763441 00000 n 
-0000880415 00000 n 
-0000881417 00000 n 
-0000881662 00000 n 
-0000881856 00000 n 
-0000963290 00000 n 
-0000969936 00000 n 
-0000970236 00000 n 
-0000970431 00000 n 
-0000970658 00000 n 
-0000970715 00000 n 
-0000970971 00000 n 
-0000974617 00000 n 
-0000974858 00000 n 
-0000974904 00000 n 
-0000974961 00000 n 
-0000984773 00000 n 
-0000985019 00000 n 
-0000985231 00000 n 
-0000998792 00000 n 
-0000999113 00000 n 
-0000999159 00000 n 
-0000999368 00000 n 
-0000999595 00000 n 
-0000999822 00000 n 
-0000999879 00000 n 
-0001000108 00000 n 
-0001000300 00000 n 
-0001000504 00000 n 
-0001000720 00000 n 
+0000157986 00000 n 
+0000158041 00000 n 
+0000174206 00000 n 
+0000174495 00000 n 
+0000174670 00000 n 
+0000174911 00000 n 
+0000175138 00000 n 
+0000175194 00000 n 
+0000190050 00000 n 
+0000190319 00000 n 
+0000190374 00000 n 
+0000190430 00000 n 
+0000190486 00000 n 
+0000190688 00000 n 
+0000208805 00000 n 
+0000209044 00000 n 
+0000209100 00000 n 
+0000209938 00000 n 
+0000210621 00000 n 
+0000222501 00000 n 
+0000222793 00000 n 
+0000222837 00000 n 
+0000222892 00000 n 
+0000222949 00000 n 
+0000223125 00000 n 
+0000223377 00000 n 
+0000223661 00000 n 
+0000236545 00000 n 
+0000236799 00000 n 
+0000236845 00000 n 
+0000236902 00000 n 
+0000249961 00000 n 
+0000250220 00000 n 
+0000250266 00000 n 
+0000250459 00000 n 
+0000265784 00000 n 
+0000266065 00000 n 
+0000266111 00000 n 
+0000266168 00000 n 
+0000266225 00000 n 
+0000266283 00000 n 
+0000266459 00000 n 
+0000279058 00000 n 
+0000279299 00000 n 
+0000286992 00000 n 
+0000287284 00000 n 
+0000322276 00000 n 
+0000324010 00000 n 
+0000324199 00000 n 
+0000324409 00000 n 
+0000324466 00000 n 
+0000325513 00000 n 
+0000336725 00000 n 
+0000336980 00000 n 
+0000337026 00000 n 
+0000337072 00000 n 
+0000337130 00000 n 
+0000349702 00000 n 
+0000349957 00000 n 
+0000350003 00000 n 
+0000350060 00000 n 
+0000350117 00000 n 
+0000362094 00000 n 
+0000362353 00000 n 
+0000362564 00000 n 
+0000362622 00000 n 
+0000362680 00000 n 
+0000374075 00000 n 
+0000374330 00000 n 
+0000374387 00000 n 
+0000374445 00000 n 
+0000375464 00000 n 
+0000378830 00000 n 
+0000379109 00000 n 
+0000379155 00000 n 
+0000379359 00000 n 
+0000451787 00000 n 
+0000451992 00000 n 
+0000552190 00000 n 
+0000554757 00000 n 
+0000555015 00000 n 
+0000555209 00000 n 
+0000658961 00000 n 
+0000659581 00000 n 
+0000659826 00000 n 
+0000660020 00000 n 
+0000762586 00000 n 
+0000763275 00000 n 
+0000763520 00000 n 
+0000763715 00000 n 
+0000880689 00000 n 
+0000881691 00000 n 
+0000881936 00000 n 
+0000882130 00000 n 
+0000963564 00000 n 
+0000970210 00000 n 
+0000970510 00000 n 
+0000970705 00000 n 
+0000970932 00000 n 
+0000970989 00000 n 
+0000971245 00000 n 
+0000974891 00000 n 
+0000975132 00000 n 
+0000975178 00000 n 
+0000975235 00000 n 
+0000985047 00000 n 
+0000985293 00000 n 
+0000985505 00000 n 
+0000999066 00000 n 
+0000999387 00000 n 
+0000999433 00000 n 
+0000999642 00000 n 
+0000999869 00000 n 
+0001000096 00000 n 
+0001000153 00000 n 
+0001000382 00000 n 
+0001000574 00000 n 
 0001000778 00000 n 
-0001012014 00000 n 
-0001012297 00000 n 
-0001012343 00000 n 
-0001012569 00000 n 
-0001012799 00000 n 
-0001012856 00000 n 
-0001012913 00000 n 
-0001012970 00000 n 
-0001013028 00000 n 
-0001013273 00000 n 
-0001013498 00000 n 
-0001030975 00000 n 
-0001031256 00000 n 
-0001031314 00000 n 
-0001031523 00000 n 
-0001031580 00000 n 
-0001031811 00000 n 
-0001045556 00000 n 
-0001045847 00000 n 
-0001045893 00000 n 
-0001045950 00000 n 
-0001046008 00000 n 
-0001046221 00000 n 
-0001046427 00000 n 
-0001046655 00000 n 
-0001046879 00000 n 
-0001047101 00000 n 
-0001047159 00000 n 
-0001057122 00000 n 
-0001057381 00000 n 
-0001057603 00000 n 
-0001057660 00000 n 
-0001068928 00000 n 
-0001069203 00000 n 
-0001069249 00000 n 
-0001069629 00000 n 
-0001069838 00000 n 
-0001070048 00000 n 
-0001070275 00000 n 
-0001070332 00000 n 
-0001070390 00000 n 
-0001078637 00000 n 
-0001078940 00000 n 
-0001078986 00000 n 
-0001079167 00000 n 
-0001146386 00000 n 
-0001146592 00000 n 
-0001146650 00000 n 
-0001146905 00000 n 
-0001147125 00000 n 
-0001147340 00000 n 
-0001156845 00000 n 
-0001157091 00000 n 
-0001157335 00000 n 
-0001167527 00000 n 
-0001167755 00000 n 
-0001178654 00000 n 
-0001178943 00000 n 
-0001178989 00000 n 
-0001179046 00000 n 
-0001179104 00000 n 
-0001179162 00000 n 
-0001179426 00000 n 
-0001179680 00000 n 
-0001179737 00000 n 
-0001179795 00000 n 
+0001000994 00000 n 
+0001001052 00000 n 
+0001012288 00000 n 
+0001012571 00000 n 
+0001012617 00000 n 
+0001012843 00000 n 
+0001013073 00000 n 
+0001013130 00000 n 
+0001013187 00000 n 
+0001013244 00000 n 
+0001013302 00000 n 
+0001013547 00000 n 
+0001013772 00000 n 
+0001031249 00000 n 
+0001031530 00000 n 
+0001031588 00000 n 
+0001031797 00000 n 
+0001031854 00000 n 
+0001032085 00000 n 
+0001045830 00000 n 
+0001046121 00000 n 
+0001046167 00000 n 
+0001046224 00000 n 
+0001046282 00000 n 
+0001046495 00000 n 
+0001046701 00000 n 
+0001046929 00000 n 
+0001047153 00000 n 
+0001047375 00000 n 
+0001047433 00000 n 
+0001057396 00000 n 
+0001057655 00000 n 
+0001057877 00000 n 
+0001057934 00000 n 
+0001069202 00000 n 
+0001069477 00000 n 
+0001069523 00000 n 
+0001069903 00000 n 
+0001070112 00000 n 
+0001070322 00000 n 
+0001070549 00000 n 
+0001070606 00000 n 
+0001070664 00000 n 
+0001078911 00000 n 
+0001079214 00000 n 
+0001079260 00000 n 
+0001079441 00000 n 
+0001146660 00000 n 
+0001146866 00000 n 
+0001146924 00000 n 
+0001147179 00000 n 
+0001147399 00000 n 
+0001147614 00000 n 
+0001157119 00000 n 
+0001157365 00000 n 
+0001157609 00000 n 
+0001167801 00000 n 
+0001168029 00000 n 
+0001178928 00000 n 
+0001179217 00000 n 
+0001179263 00000 n 
+0001179320 00000 n 
+0001179378 00000 n 
+0001179436 00000 n 
+0001179700 00000 n 
+0001179954 00000 n 
 0001180011 00000 n 
 0001180069 00000 n 
-0001191938 00000 n 
-0001192245 00000 n 
-0001192440 00000 n 
-0001192652 00000 n 
-0001192859 00000 n 
-0001193066 00000 n 
-0001193286 00000 n 
-0001193562 00000 n 
-0001193619 00000 n 
-0001193826 00000 n 
-0001205747 00000 n 
-0001206014 00000 n 
-0001206071 00000 n 
-0001206289 00000 n 
-0001206504 00000 n 
-0001206561 00000 n 
-0001207020 00000 n 
-0001207078 00000 n 
-0001221574 00000 n 
-0001221833 00000 n 
-0001221879 00000 n 
-0001222149 00000 n 
-0001222207 00000 n 
-0001222265 00000 n 
-0001235875 00000 n 
-0001236174 00000 n 
-0001236373 00000 n 
-0001236430 00000 n 
-0001236675 00000 n 
-0001236904 00000 n 
-0001236962 00000 n 
-0001237020 00000 n 
-0001237234 00000 n 
-0001237447 00000 n 
-0001237505 00000 n 
-0001238607 00000 n 
-0001238863 00000 n 
-0001238921 00000 n 
-0001252286 00000 n 
-0001252566 00000 n 
-0001252623 00000 n 
-0001252837 00000 n 
-0001253093 00000 n 
-0001268561 00000 n 
-0001268849 00000 n 
-0001269120 00000 n 
-0001269178 00000 n 
-0001269381 00000 n 
-0001269636 00000 n 
-0001285898 00000 n 
-0001286165 00000 n 
-0001286469 00000 n 
-0001286739 00000 n 
-0001296555 00000 n 
-0001296796 00000 n 
-0001296842 00000 n 
-0001307568 00000 n 
-0001307843 00000 n 
-0001307889 00000 n 
-0001308098 00000 n 
-0001308308 00000 n 
-0001308535 00000 n 
-0001308592 00000 n 
-0001308650 00000 n 
-0001313740 00000 n 
-0001313999 00000 n 
-0001314045 00000 n 
-0001314261 00000 n 
-0001314318 00000 n 
-0001329725 00000 n 
-0001330005 00000 n 
-0001330051 00000 n 
-0001330108 00000 n 
-0001330361 00000 n 
-0001330580 00000 n 
-0001330637 00000 n 
-0001331289 00000 n 
-0001335451 00000 n 
-0001335723 00000 n 
-0001335769 00000 n 
-0001335986 00000 n 
-0001349261 00000 n 
-0001349565 00000 n 
-0001349611 00000 n 
-0001349834 00000 n 
-0001350029 00000 n 
-0001350219 00000 n 
-0001350265 00000 n 
-0001350460 00000 n 
-0001350657 00000 n 
-0001350715 00000 n 
-0001350773 00000 n 
-0001359783 00000 n 
-0001360024 00000 n 
-0001360070 00000 n 
-0001374934 00000 n 
-0001375249 00000 n 
-0001375295 00000 n 
-0001375506 00000 n 
-0001375704 00000 n 
-0001375904 00000 n 
-0001376105 00000 n 
-0001376344 00000 n 
-0001376553 00000 n 
-0001376610 00000 n 
-0001376850 00000 n 
-0001377084 00000 n 
-0001377142 00000 n 
-0001390142 00000 n 
-0001390428 00000 n 
-0001390606 00000 n 
-0001390664 00000 n 
-0001401534 00000 n 
-0001401809 00000 n 
-0001401855 00000 n 
-0001402077 00000 n 
-0001402293 00000 n 
-0001402518 00000 n 
-0001402575 00000 n 
-0001402632 00000 n 
-0001413053 00000 n 
-0001413281 00000 n 
-0001425686 00000 n 
-0001425914 00000 n 
-0001435105 00000 n 
-0001435359 00000 n 
-0001435416 00000 n 
-0001443405 00000 n 
-0001443646 00000 n 
-0001453114 00000 n 
-0001453373 00000 n 
-0001453431 00000 n 
-0001453673 00000 n 
-0001463197 00000 n 
-0001463425 00000 n 
-0001476315 00000 n 
-0001476606 00000 n 
-0001476652 00000 n 
-0001476710 00000 n 
-0001476916 00000 n 
-0001477167 00000 n 
-0001477414 00000 n 
-0001477621 00000 n 
-0001477854 00000 n 
-0001487206 00000 n 
-0001487473 00000 n 
-0001487519 00000 n 
-0001487576 00000 n 
-0001487786 00000 n 
-0001487843 00000 n 
-0001488076 00000 n 
-0001510570 00000 n 
-0001510798 00000 n 
-0001523370 00000 n 
-0001523645 00000 n 
-0001523702 00000 n 
-0001524159 00000 n 
-0001524370 00000 n 
-0001524428 00000 n 
-0001524486 00000 n 
-0001525012 00000 n 
-0001525253 00000 n 
-0001525476 00000 n 
-0001538153 00000 n 
-0001538394 00000 n 
-0001538440 00000 n 
-0001557371 00000 n 
-0001557683 00000 n 
-0001557729 00000 n 
-0001557927 00000 n 
-0001557984 00000 n 
-0001558236 00000 n 
-0001558293 00000 n 
+0001180285 00000 n 
+0001180343 00000 n 
+0001192212 00000 n 
+0001192519 00000 n 
+0001192714 00000 n 
+0001192926 00000 n 
+0001193133 00000 n 
+0001193340 00000 n 
+0001193560 00000 n 
+0001193836 00000 n 
+0001193893 00000 n 
+0001194100 00000 n 
+0001206021 00000 n 
+0001206288 00000 n 
+0001206345 00000 n 
+0001206563 00000 n 
+0001206778 00000 n 
+0001206835 00000 n 
+0001207294 00000 n 
+0001207352 00000 n 
+0001221848 00000 n 
+0001222107 00000 n 
+0001222153 00000 n 
+0001222423 00000 n 
+0001222481 00000 n 
+0001222539 00000 n 
+0001236149 00000 n 
+0001236448 00000 n 
+0001236647 00000 n 
+0001236704 00000 n 
+0001236949 00000 n 
+0001237178 00000 n 
+0001237236 00000 n 
+0001237294 00000 n 
+0001237508 00000 n 
+0001237721 00000 n 
+0001237779 00000 n 
+0001238881 00000 n 
+0001239137 00000 n 
+0001239195 00000 n 
+0001252560 00000 n 
+0001252840 00000 n 
+0001252897 00000 n 
+0001253111 00000 n 
+0001253367 00000 n 
+0001268835 00000 n 
+0001269123 00000 n 
+0001269394 00000 n 
+0001269452 00000 n 
+0001269655 00000 n 
+0001269910 00000 n 
+0001286172 00000 n 
+0001286439 00000 n 
+0001286743 00000 n 
+0001287013 00000 n 
+0001296829 00000 n 
+0001297070 00000 n 
+0001297116 00000 n 
+0001307842 00000 n 
+0001308117 00000 n 
+0001308163 00000 n 
+0001308372 00000 n 
+0001308582 00000 n 
+0001308809 00000 n 
+0001308866 00000 n 
+0001308924 00000 n 
+0001314014 00000 n 
+0001314273 00000 n 
+0001314319 00000 n 
+0001314535 00000 n 
+0001314592 00000 n 
+0001329999 00000 n 
+0001330279 00000 n 
+0001330325 00000 n 
+0001330382 00000 n 
+0001330635 00000 n 
+0001330854 00000 n 
+0001330911 00000 n 
+0001331563 00000 n 
+0001335725 00000 n 
+0001335997 00000 n 
+0001336043 00000 n 
+0001336260 00000 n 
+0001349535 00000 n 
+0001349839 00000 n 
+0001349885 00000 n 
+0001350108 00000 n 
+0001350303 00000 n 
+0001350493 00000 n 
+0001350539 00000 n 
+0001350734 00000 n 
+0001350931 00000 n 
+0001350989 00000 n 
+0001351047 00000 n 
+0001360057 00000 n 
+0001360298 00000 n 
+0001360344 00000 n 
+0001375208 00000 n 
+0001375523 00000 n 
+0001375569 00000 n 
+0001375780 00000 n 
+0001375978 00000 n 
+0001376178 00000 n 
+0001376379 00000 n 
+0001376618 00000 n 
+0001376827 00000 n 
+0001376884 00000 n 
+0001377124 00000 n 
+0001377358 00000 n 
+0001377416 00000 n 
+0001390416 00000 n 
+0001390702 00000 n 
+0001390880 00000 n 
+0001390938 00000 n 
+0001401808 00000 n 
+0001402083 00000 n 
+0001402129 00000 n 
+0001402351 00000 n 
+0001402567 00000 n 
+0001402792 00000 n 
+0001402849 00000 n 
+0001402906 00000 n 
+0001413327 00000 n 
+0001413555 00000 n 
+0001425960 00000 n 
+0001426188 00000 n 
+0001435379 00000 n 
+0001435633 00000 n 
+0001435690 00000 n 
+0001443679 00000 n 
+0001443920 00000 n 
+0001453388 00000 n 
+0001453647 00000 n 
+0001453705 00000 n 
+0001453947 00000 n 
+0001463471 00000 n 
+0001463699 00000 n 
+0001476589 00000 n 
+0001476880 00000 n 
+0001476926 00000 n 
+0001476984 00000 n 
+0001477190 00000 n 
+0001477441 00000 n 
+0001477688 00000 n 
+0001477895 00000 n 
+0001478128 00000 n 
+0001487480 00000 n 
+0001487747 00000 n 
+0001487793 00000 n 
+0001487850 00000 n 
+0001488060 00000 n 
+0001488117 00000 n 
+0001488350 00000 n 
+0001510844 00000 n 
+0001511072 00000 n 
+0001523644 00000 n 
+0001523919 00000 n 
+0001523976 00000 n 
+0001524433 00000 n 
+0001524644 00000 n 
+0001524702 00000 n 
+0001524760 00000 n 
+0001525286 00000 n 
+0001525527 00000 n 
+0001525750 00000 n 
+0001538427 00000 n 
+0001538668 00000 n 
+0001538714 00000 n 
+0001557645 00000 n 
+0001557957 00000 n 
+0001558003 00000 n 
+0001558201 00000 n 
+0001558258 00000 n 
 0001558510 00000 n 
-0001558715 00000 n 
-0001558923 00000 n 
-0001558980 00000 n 
-0001559194 00000 n 
-0001569655 00000 n 
-0001569922 00000 n 
-0001570163 00000 n 
-0001570379 00000 n 
-0001583137 00000 n 
-0001583428 00000 n 
-0001583474 00000 n 
-0001583531 00000 n 
-0001583588 00000 n 
-0001583773 00000 n 
-0001583830 00000 n 
-0001584093 00000 n 
-0001584150 00000 n 
-0001584352 00000 n 
-0001584574 00000 n 
-0001584791 00000 n 
-0001596719 00000 n 
-0001596978 00000 n 
-0001597184 00000 n 
-0001597230 00000 n 
-0001601107 00000 n 
-0001601374 00000 n 
-0001601420 00000 n 
-0001601635 00000 n 
-0001601840 00000 n 
-0001612094 00000 n 
-0001612403 00000 n 
-0001612449 00000 n 
-0001612638 00000 n 
-0001612695 00000 n 
-0001612934 00000 n 
-0001613185 00000 n 
-0001613243 00000 n 
-0001613461 00000 n 
-0001613518 00000 n 
-0001620950 00000 n 
-0001621204 00000 n 
-0001621250 00000 n 
-0001632211 00000 n 
-0001632483 00000 n 
-0001632529 00000 n 
-0001632988 00000 n 
-0001633234 00000 n 
-0001633280 00000 n 
-0001633338 00000 n 
-0001645483 00000 n 
-0001645768 00000 n 
-0001645969 00000 n 
-0001646026 00000 n 
-0001657906 00000 n 
-0001658191 00000 n 
-0001658237 00000 n 
-0001658294 00000 n 
-0001658492 00000 n 
-0001658550 00000 n 
-0001660962 00000 n 
-0001661190 00000 n 
-0001661310 00000 n 
-0001661431 00000 n 
-0001661556 00000 n 
-0001661682 00000 n 
-0001661828 00000 n 
-0001661976 00000 n 
-0001662109 00000 n 
-0001662244 00000 n 
-0001662378 00000 n 
-0001662514 00000 n 
-0001662667 00000 n 
-0001662821 00000 n 
-0001662972 00000 n 
-0001663125 00000 n 
-0001663273 00000 n 
-0001663422 00000 n 
-0001663573 00000 n 
-0001663715 00000 n 
-0001663876 00000 n 
-0001664030 00000 n 
-0001664188 00000 n 
-0001664348 00000 n 
-0001664525 00000 n 
-0001664703 00000 n 
-0001664888 00000 n 
-0001665075 00000 n 
-0001665261 00000 n 
-0001665449 00000 n 
-0001665623 00000 n 
-0001665799 00000 n 
-0001665983 00000 n 
-0001666178 00000 n 
-0001666374 00000 n 
-0001666570 00000 n 
-0001666754 00000 n 
-0001666940 00000 n 
-0001667116 00000 n 
-0001667294 00000 n 
-0001667463 00000 n 
-0001667634 00000 n 
-0001667814 00000 n 
-0001667996 00000 n 
-0001668172 00000 n 
-0001668358 00000 n 
-0001668557 00000 n 
-0001668756 00000 n 
-0001668935 00000 n 
-0001669116 00000 n 
-0001669279 00000 n 
-0001669444 00000 n 
-0001669601 00000 n 
-0001669760 00000 n 
-0001669935 00000 n 
-0001670110 00000 n 
-0001670260 00000 n 
-0001670420 00000 n 
-0001670567 00000 n 
-0001670725 00000 n 
-0001670896 00000 n 
-0001671067 00000 n 
-0001671220 00000 n 
-0001671383 00000 n 
-0001671528 00000 n 
-0001671684 00000 n 
-0001671833 00000 n 
-0001671992 00000 n 
-0001672149 00000 n 
-0001672316 00000 n 
-0001672462 00000 n 
-0001672618 00000 n 
-0001672788 00000 n 
-0001672958 00000 n 
-0001673112 00000 n 
-0001673276 00000 n 
-0001673425 00000 n 
-0001673585 00000 n 
-0001673721 00000 n 
-0001673867 00000 n 
-0001674056 00000 n 
-0001674245 00000 n 
-0001674411 00000 n 
-0001674577 00000 n 
-0001674727 00000 n 
-0001674887 00000 n 
-0001675048 00000 n 
-0001675209 00000 n 
-0001675376 00000 n 
-0001675543 00000 n 
-0001675683 00000 n 
-0001675833 00000 n 
-0001676003 00000 n 
-0001676184 00000 n 
-0001676334 00000 n 
-0001676494 00000 n 
-0001676641 00000 n 
-0001676798 00000 n 
-0001676947 00000 n 
-0001677098 00000 n 
-0001677286 00000 n 
-0001677474 00000 n 
-0001677624 00000 n 
-0001677784 00000 n 
-0001677933 00000 n 
-0001678092 00000 n 
-0001678244 00000 n 
-0001678396 00000 n 
-0001678562 00000 n 
-0001678740 00000 n 
-0001678888 00000 n 
-0001679047 00000 n 
-0001679203 00000 n 
-0001679369 00000 n 
-0001679539 00000 n 
-0001679709 00000 n 
-0001679877 00000 n 
-0001680045 00000 n 
-0001680204 00000 n 
-0001680375 00000 n 
-0001680532 00000 n 
-0001680692 00000 n 
-0001680851 00000 n 
-0001681013 00000 n 
-0001681192 00000 n 
-0001681371 00000 n 
-0001681526 00000 n 
-0001681683 00000 n 
-0001681872 00000 n 
-0001682074 00000 n 
-0001682262 00000 n 
-0001682452 00000 n 
-0001682653 00000 n 
-0001682862 00000 n 
-0001683027 00000 n 
-0001683202 00000 n 
-0001683364 00000 n 
-0001683536 00000 n 
-0001683701 00000 n 
-0001683866 00000 n 
-0001684031 00000 n 
-0001684209 00000 n 
-0001684384 00000 n 
-0001684535 00000 n 
-0001684697 00000 n 
-0001684873 00000 n 
-0001685051 00000 n 
-0001685212 00000 n 
-0001685383 00000 n 
-0001685534 00000 n 
-0001685695 00000 n 
-0001685838 00000 n 
-0001685992 00000 n 
-0001686163 00000 n 
-0001686334 00000 n 
-0001686501 00000 n 
-0001686668 00000 n 
-0001686955 00000 n 
-0001687033 00000 n 
-0001687210 00000 n 
-0001687402 00000 n 
-0001687667 00000 n 
-0001687842 00000 n 
-0001688103 00000 n 
-0001688284 00000 n 
-0001688469 00000 n 
-0001688754 00000 n 
-0001688963 00000 n 
-0001689170 00000 n 
-0001689349 00000 n 
-0001689562 00000 n 
-0001689827 00000 n 
-0001690032 00000 n 
-0001690287 00000 n 
-0001690543 00000 n 
-0001690754 00000 n 
-0001690995 00000 n 
-0001691236 00000 n 
-0001691444 00000 n 
-0001691599 00000 n 
+0001558567 00000 n 
+0001558784 00000 n 
+0001558989 00000 n 
+0001559197 00000 n 
+0001559254 00000 n 
+0001559468 00000 n 
+0001569929 00000 n 
+0001570196 00000 n 
+0001570437 00000 n 
+0001570653 00000 n 
+0001583411 00000 n 
+0001583702 00000 n 
+0001583748 00000 n 
+0001583805 00000 n 
+0001583862 00000 n 
+0001584047 00000 n 
+0001584104 00000 n 
+0001584367 00000 n 
+0001584424 00000 n 
+0001584626 00000 n 
+0001584848 00000 n 
+0001585065 00000 n 
+0001596993 00000 n 
+0001597252 00000 n 
+0001597458 00000 n 
+0001597504 00000 n 
+0001601381 00000 n 
+0001601648 00000 n 
+0001601694 00000 n 
+0001601909 00000 n 
+0001602114 00000 n 
+0001612368 00000 n 
+0001612677 00000 n 
+0001612723 00000 n 
+0001612912 00000 n 
+0001612969 00000 n 
+0001613208 00000 n 
+0001613459 00000 n 
+0001613517 00000 n 
+0001613735 00000 n 
+0001613792 00000 n 
+0001621224 00000 n 
+0001621478 00000 n 
+0001621524 00000 n 
+0001632485 00000 n 
+0001632757 00000 n 
+0001632803 00000 n 
+0001633262 00000 n 
+0001633508 00000 n 
+0001633554 00000 n 
+0001633612 00000 n 
+0001645757 00000 n 
+0001646042 00000 n 
+0001646243 00000 n 
+0001646300 00000 n 
+0001658180 00000 n 
+0001658465 00000 n 
+0001658511 00000 n 
+0001658568 00000 n 
+0001658766 00000 n 
+0001658824 00000 n 
+0001661236 00000 n 
+0001661464 00000 n 
+0001661584 00000 n 
+0001661705 00000 n 
+0001661830 00000 n 
+0001661956 00000 n 
+0001662102 00000 n 
+0001662250 00000 n 
+0001662383 00000 n 
+0001662518 00000 n 
+0001662652 00000 n 
+0001662788 00000 n 
+0001662941 00000 n 
+0001663095 00000 n 
+0001663246 00000 n 
+0001663399 00000 n 
+0001663547 00000 n 
+0001663696 00000 n 
+0001663847 00000 n 
+0001663989 00000 n 
+0001664150 00000 n 
+0001664304 00000 n 
+0001664462 00000 n 
+0001664622 00000 n 
+0001664799 00000 n 
+0001664977 00000 n 
+0001665162 00000 n 
+0001665349 00000 n 
+0001665535 00000 n 
+0001665723 00000 n 
+0001665897 00000 n 
+0001666073 00000 n 
+0001666257 00000 n 
+0001666452 00000 n 
+0001666648 00000 n 
+0001666844 00000 n 
+0001667028 00000 n 
+0001667214 00000 n 
+0001667390 00000 n 
+0001667568 00000 n 
+0001667737 00000 n 
+0001667908 00000 n 
+0001668088 00000 n 
+0001668270 00000 n 
+0001668446 00000 n 
+0001668632 00000 n 
+0001668831 00000 n 
+0001669030 00000 n 
+0001669209 00000 n 
+0001669390 00000 n 
+0001669553 00000 n 
+0001669718 00000 n 
+0001669875 00000 n 
+0001670034 00000 n 
+0001670209 00000 n 
+0001670384 00000 n 
+0001670534 00000 n 
+0001670694 00000 n 
+0001670841 00000 n 
+0001670999 00000 n 
+0001671170 00000 n 
+0001671341 00000 n 
+0001671494 00000 n 
+0001671657 00000 n 
+0001671802 00000 n 
+0001671958 00000 n 
+0001672107 00000 n 
+0001672266 00000 n 
+0001672423 00000 n 
+0001672590 00000 n 
+0001672736 00000 n 
+0001672892 00000 n 
+0001673062 00000 n 
+0001673232 00000 n 
+0001673386 00000 n 
+0001673550 00000 n 
+0001673699 00000 n 
+0001673859 00000 n 
+0001673995 00000 n 
+0001674141 00000 n 
+0001674330 00000 n 
+0001674519 00000 n 
+0001674685 00000 n 
+0001674851 00000 n 
+0001675001 00000 n 
+0001675161 00000 n 
+0001675322 00000 n 
+0001675483 00000 n 
+0001675650 00000 n 
+0001675817 00000 n 
+0001675957 00000 n 
+0001676107 00000 n 
+0001676277 00000 n 
+0001676458 00000 n 
+0001676608 00000 n 
+0001676768 00000 n 
+0001676915 00000 n 
+0001677072 00000 n 
+0001677221 00000 n 
+0001677372 00000 n 
+0001677560 00000 n 
+0001677748 00000 n 
+0001677898 00000 n 
+0001678058 00000 n 
+0001678207 00000 n 
+0001678366 00000 n 
+0001678518 00000 n 
+0001678670 00000 n 
+0001678836 00000 n 
+0001679014 00000 n 
+0001679162 00000 n 
+0001679321 00000 n 
+0001679477 00000 n 
+0001679643 00000 n 
+0001679813 00000 n 
+0001679983 00000 n 
+0001680151 00000 n 
+0001680319 00000 n 
+0001680478 00000 n 
+0001680649 00000 n 
+0001680806 00000 n 
+0001680966 00000 n 
+0001681125 00000 n 
+0001681287 00000 n 
+0001681466 00000 n 
+0001681645 00000 n 
+0001681800 00000 n 
+0001681957 00000 n 
+0001682146 00000 n 
+0001682348 00000 n 
+0001682536 00000 n 
+0001682726 00000 n 
+0001682927 00000 n 
+0001683136 00000 n 
+0001683301 00000 n 
+0001683476 00000 n 
+0001683638 00000 n 
+0001683810 00000 n 
+0001683975 00000 n 
+0001684140 00000 n 
+0001684305 00000 n 
+0001684483 00000 n 
+0001684658 00000 n 
+0001684809 00000 n 
+0001684971 00000 n 
+0001685147 00000 n 
+0001685325 00000 n 
+0001685486 00000 n 
+0001685657 00000 n 
+0001685808 00000 n 
+0001685969 00000 n 
+0001686112 00000 n 
+0001686266 00000 n 
+0001686437 00000 n 
+0001686608 00000 n 
+0001686775 00000 n 
+0001686942 00000 n 
+0001687229 00000 n 
+0001687307 00000 n 
+0001687484 00000 n 
+0001687676 00000 n 
+0001687941 00000 n 
+0001688116 00000 n 
+0001688377 00000 n 
+0001688558 00000 n 
+0001688743 00000 n 
+0001689028 00000 n 
+0001689237 00000 n 
+0001689444 00000 n 
+0001689623 00000 n 
+0001689836 00000 n 
+0001690101 00000 n 
+0001690306 00000 n 
+0001690561 00000 n 
+0001690817 00000 n 
+0001691028 00000 n 
+0001691269 00000 n 
+0001691510 00000 n 
+0001691718 00000 n 
 0001691873 00000 n 
-0001692055 00000 n 
-0001692264 00000 n 
-0001692513 00000 n 
-0001692766 00000 n 
-0001692999 00000 n 
-0001693197 00000 n 
-0001693496 00000 n 
-0001693690 00000 n 
-0001693891 00000 n 
-0001694132 00000 n 
-0001694361 00000 n 
-0001694550 00000 n 
-0001694763 00000 n 
-0001694999 00000 n 
-0001695191 00000 n 
-0001695439 00000 n 
-0001695676 00000 n 
-0001695896 00000 n 
-0001696105 00000 n 
-0001696352 00000 n 
-0001696658 00000 n 
-0001696852 00000 n 
-0001697073 00000 n 
-0001697306 00000 n 
-0001697468 00000 n 
-0001697734 00000 n 
-0001697928 00000 n 
-0001698132 00000 n 
-0001698287 00000 n 
-0001698549 00000 n 
-0001698732 00000 n 
-0001698937 00000 n 
-0001699108 00000 n 
-0001699386 00000 n 
-0001699588 00000 n 
-0001699841 00000 n 
-0001700092 00000 n 
-0001700350 00000 n 
-0001700596 00000 n 
-0001700812 00000 n 
-0001701040 00000 n 
-0001701333 00000 n 
-0001701526 00000 n 
-0001701871 00000 n 
-0001702194 00000 n 
-0001702496 00000 n 
-0001702750 00000 n 
-0001702982 00000 n 
-0001703200 00000 n 
-0001703434 00000 n 
-0001703648 00000 n 
-0001703834 00000 n 
-0001704074 00000 n 
-0001704248 00000 n 
-0001704505 00000 n 
-0001704732 00000 n 
-0001705445 00000 n 
-0001715591 00000 n 
-0001715807 00000 n 
-0001717170 00000 n 
-0001718214 00000 n 
-0001727029 00000 n 
-0001727250 00000 n 
-0001728613 00000 n 
-0001729678 00000 n 
-0001731127 00000 n 
-0001731338 00000 n 
-0001731658 00000 n 
-0001732574 00000 n 
-0001738595 00000 n 
-0001738809 00000 n 
-0001740172 00000 n 
-0001741218 00000 n 
-0001742891 00000 n 
-0001743105 00000 n 
-0001743417 00000 n 
-0001744555 00000 n 
-0001745950 00000 n 
-0001746168 00000 n 
-0001747531 00000 n 
-0001748670 00000 n 
-0001751168 00000 n 
-0001751394 00000 n 
-0001752757 00000 n 
+0001692147 00000 n 
+0001692329 00000 n 
+0001692538 00000 n 
+0001692787 00000 n 
+0001693040 00000 n 
+0001693273 00000 n 
+0001693471 00000 n 
+0001693770 00000 n 
+0001693964 00000 n 
+0001694165 00000 n 
+0001694406 00000 n 
+0001694635 00000 n 
+0001694824 00000 n 
+0001695037 00000 n 
+0001695273 00000 n 
+0001695465 00000 n 
+0001695713 00000 n 
+0001695950 00000 n 
+0001696170 00000 n 
+0001696379 00000 n 
+0001696626 00000 n 
+0001696932 00000 n 
+0001697126 00000 n 
+0001697347 00000 n 
+0001697580 00000 n 
+0001697742 00000 n 
+0001698008 00000 n 
+0001698202 00000 n 
+0001698406 00000 n 
+0001698561 00000 n 
+0001698823 00000 n 
+0001699006 00000 n 
+0001699211 00000 n 
+0001699382 00000 n 
+0001699660 00000 n 
+0001699862 00000 n 
+0001700115 00000 n 
+0001700366 00000 n 
+0001700624 00000 n 
+0001700870 00000 n 
+0001701086 00000 n 
+0001701314 00000 n 
+0001701607 00000 n 
+0001701800 00000 n 
+0001702145 00000 n 
+0001702468 00000 n 
+0001702770 00000 n 
+0001703024 00000 n 
+0001703256 00000 n 
+0001703474 00000 n 
+0001703708 00000 n 
+0001703922 00000 n 
+0001704108 00000 n 
+0001704348 00000 n 
+0001704522 00000 n 
+0001704779 00000 n 
+0001705006 00000 n 
+0001705719 00000 n 
+0001715865 00000 n 
+0001716081 00000 n 
+0001717444 00000 n 
+0001718488 00000 n 
+0001727303 00000 n 
+0001727524 00000 n 
+0001728887 00000 n 
+0001729952 00000 n 
+0001731401 00000 n 
+0001731612 00000 n 
+0001731932 00000 n 
+0001732848 00000 n 
+0001738869 00000 n 
+0001739083 00000 n 
+0001740446 00000 n 
+0001741492 00000 n 
+0001743165 00000 n 
+0001743379 00000 n 
+0001743691 00000 n 
+0001744829 00000 n 
+0001746224 00000 n 
+0001746442 00000 n 
+0001747805 00000 n 
+0001748944 00000 n 
+0001751442 00000 n 
+0001751668 00000 n 
+0001753031 00000 n 
 trailer
 << /Size 764
 /Root 2 0 R
 /Info 1 0 R
 >>
 startxref
-1753880
+1754154
 %%EOF


[7/9] isis-site git commit: Merge branch 'ISIS-1712_pr-95'

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/8566a8ed/content/guides/ugvw/ugvw.html
----------------------------------------------------------------------
diff --git a/content/guides/ugvw/ugvw.html b/content/guides/ugvw/ugvw.html
index 2411758..d7873d5 100644
--- a/content/guides/ugvw/ugvw.html
+++ b/content/guides/ugvw/ugvw.html
@@ -4375,7 +4375,6 @@ public WebRequest newWebRequest(HttpServletRequest servletRequest, String filter
             </ul> 
            </div> </li> 
           <li> <p><a href="http://github.com/isisaddons/isis-wicket-wickedcharts">wickedcharts</a> component - low-level integration with Highcharts charting library</p> </li> 
-          <li> <p><a href="http://github.com/isisaddons/isis-wicket-pdfjs">pdf.js</a> component - to view a Blob containing a PDF as an image</p> </li> 
          </ul> 
         </div> 
         <div class="paragraph"> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/8566a8ed/content/guides/ugvw/ugvw.pdf
----------------------------------------------------------------------
diff --git a/content/guides/ugvw/ugvw.pdf b/content/guides/ugvw/ugvw.pdf
index 909d9e7..e4ecbef 100644
--- a/content/guides/ugvw/ugvw.pdf
+++ b/content/guides/ugvw/ugvw.pdf
@@ -4,16 +4,16 @@
 << /Title (Wicket Viewer)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20170814204533+01'00')
-/ModDate (D:20170814204533+01'00')
+/CreationDate (D:20170922134410+01'00')
+/ModDate (D:20170922134410+01'00')
 >>
 endobj
 2 0 obj
 << /Type /Catalog
 /Pages 3 0 R
 /Names 16 0 R
-/Outlines 702 0 R
-/PageLabels 747 0 R
+/Outlines 701 0 R
+/PageLabels 746 0 R
 /PageMode /UseOutlines
 /OpenAction [7 0 R /FitH 842.89]
 /ViewerPreferences << /DisplayDocTitle true
@@ -80,11 +80,11 @@ endobj
 << /Type /Font
 /BaseFont /AAAAEF+NotoSerif
 /Subtype /TrueType
-/FontDescriptor 749 0 R
+/FontDescriptor 748 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 751 0 R
-/ToUnicode 750 0 R
+/Widths 750 0 R
+/ToUnicode 749 0 R
 >>
 endobj
 9 0 obj
@@ -1639,7 +1639,7 @@ endobj
 /F1.0 8 0 R
 >>
 >>
-/Annots [617 0 R 618 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R 624 0 R 625 0 R 626 0 R 627 0 R 628 0 R 629 0 R 630 0 R 631 0 R 632 0 R 633 0 R 634 0 R 635 0 R 636 0 R 637 0 R 638 0 R 639 0 R 640 0 R 641 0 R 642 0 R 643 0 R 644 0 R 645 0 R 646 0 R 647 0 R 648 0 R 649 0 R 650 0 R 651 0 R 652 0 R 653 0 R 654 0 R 655 0 R 656 0 R 657 0 R 658 0 R 659 0 R 660 0 R 661 0 R 662 0 R 663 0 R 664 0 R 665 0 R 666 0 R 667 0 R 668 0 R 669 0 R 670 0 R 671 0 R 672 0 R 673 0 R 674 0 R 675 0 R 676 0 R 677 0 R 678 0 R 679 0 R 680 0 R 681 0 R 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R 690 0 R 691 0 R 692 0 R]
+/Annots [616 0 R 617 0 R 618 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R 624 0 R 625 0 R 626 0 R 627 0 R 628 0 R 629 0 R 630 0 R 631 0 R 632 0 R 633 0 R 634 0 R 635 0 R 636 0 R 637 0 R 638 0 R 639 0 R 640 0 R 641 0 R 642 0 R 643 0 R 644 0 R 645 0 R 646 0 R 647 0 R 648 0 R 649 0 R 650 0 R 651 0 R 652 0 R 653 0 R 654 0 R 655 0 R 656 0 R 657 0 R 658 0 R 659 0 R 660 0 R 661 0 R 662 0 R 663 0 R 664 0 R 665 0 R 666 0 R 667 0 R 668 0 R 669 0 R 670 0 R 671 0 R 672 0 R 673 0 R 674 0 R 675 0 R 676 0 R 677 0 R 678 0 R 679 0 R 680 0 R 681 0 R 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R 690 0 R 691 0 R]
 >>
 endobj
 11 0 obj
@@ -1822,7 +1822,7 @@ endobj
 /Font << /F1.0 8 0 R
 >>
 >>
-/Annots [693 0 R 694 0 R 695 0 R 696 0 R 697 0 R 698 0 R 699 0 R 700 0 R]
+/Annots [692 0 R 693 0 R 694 0 R 695 0 R 696 0 R 697 0 R 698 0 R 699 0 R]
 >>
 endobj
 13 0 obj
@@ -2465,7 +2465,7 @@ endobj
 /Font << /F2.0 18 0 R
 /F1.0 8 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [19 0 R 20 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R]
@@ -2487,11 +2487,11 @@ endobj
 << /Type /Font
 /BaseFont /AAAAEG+NotoSerif-Bold
 /Subtype /TrueType
-/FontDescriptor 753 0 R
+/FontDescriptor 752 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 755 0 R
-/ToUnicode 754 0 R
+/Widths 754 0 R
+/ToUnicode 753 0 R
 >>
 endobj
 19 0 obj
@@ -3024,7 +3024,7 @@ endobj
 /F3.1 45 0 R
 >>
 /XObject << /I1 43 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 >>
 /Annots [42 0 R 44 0 R 46 0 R]
@@ -3550,11 +3550,11 @@ endobj
 << /Type /Font
 /BaseFont /AAAAEH+FontAwesome
 /Subtype /TrueType
-/FontDescriptor 757 0 R
+/FontDescriptor 756 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 759 0 R
-/ToUnicode 758 0 R
+/Widths 758 0 R
+/ToUnicode 757 0 R
 >>
 endobj
 46 0 obj
@@ -3979,7 +3979,7 @@ endobj
 /F5.0 54 0 R
 >>
 /XObject << /I2 60 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 >>
 /Annots [52 0 R 57 0 R 59 0 R 61 0 R]
@@ -4003,22 +4003,22 @@ endobj
 << /Type /Font
 /BaseFont /AAAAEI+mplus1mn-regular
 /Subtype /TrueType
-/FontDescriptor 761 0 R
+/FontDescriptor 760 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 763 0 R
-/ToUnicode 762 0 R
+/Widths 762 0 R
+/ToUnicode 761 0 R
 >>
 endobj
 54 0 obj
 << /Type /Font
 /BaseFont /AAAAEJ+mplus-1p-regular
 /Subtype /TrueType
-/FontDescriptor 765 0 R
+/FontDescriptor 764 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 767 0 R
-/ToUnicode 766 0 R
+/Widths 766 0 R
+/ToUnicode 765 0 R
 >>
 endobj
 55 0 obj
@@ -5286,7 +5286,7 @@ endobj
 /F2.0 18 0 R
 >>
 /XObject << /I3 66 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 >>
 /Annots [64 0 R 65 0 R 67 0 R 69 0 R]
@@ -7086,7 +7086,7 @@ endobj
 /F3.1 45 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [72 0 R 75 0 R]
@@ -7373,7 +7373,7 @@ endobj
 /F3.1 45 0 R
 >>
 /XObject << /I4 83 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 >>
 /Annots [81 0 R 84 0 R 85 0 R]
@@ -8486,7 +8486,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I5 86 0 R
 /I6 91 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F1.0 8 0 R
 /F4.0 53 0 R
@@ -9278,7 +9278,7 @@ endobj
 /F2.0 18 0 R
 >>
 /XObject << /I7 95 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 >>
 /Annots [96 0 R]
@@ -10318,7 +10318,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I8 98 0 R
 /I9 106 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F2.0 18 0 R
 /F1.0 8 0 R
@@ -13187,7 +13187,7 @@ endobj
 /F5.0 54 0 R
 /F3.1 45 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 >>
@@ -13623,7 +13623,7 @@ endobj
 /F4.0 53 0 R
 >>
 /XObject << /I10 121 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 >>
 /Annots [113 0 R 114 0 R 116 0 R 117 0 R 119 0 R 122 0 R 123 0 R]
@@ -14401,7 +14401,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I11 125 0 R
 /I12 130 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F2.0 18 0 R
 /F1.0 8 0 R
@@ -15234,7 +15234,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I13 132 0 R
 /I14 137 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F2.0 18 0 R
 /F1.0 8 0 R
@@ -16222,7 +16222,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I15 140 0 R
 /I16 145 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F2.0 18 0 R
 /F1.0 8 0 R
@@ -20537,7 +20537,7 @@ endobj
 /F1.0 8 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 >>
@@ -20945,7 +20945,7 @@ endobj
 /F2.0 18 0 R
 >>
 /XObject << /I17 159 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 >>
 /Annots [153 0 R 154 0 R 155 0 R 156 0 R 160 0 R]
@@ -20999,11 +20999,11 @@ endobj
 << /Type /Font
 /BaseFont /AAAAEK+NotoSerif-Italic
 /Subtype /TrueType
-/FontDescriptor 769 0 R
+/FontDescriptor 768 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 771 0 R
-/ToUnicode 770 0 R
+/Widths 770 0 R
+/ToUnicode 769 0 R
 >>
 endobj
 158 0 obj
@@ -21187,7 +21187,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I18 161 0 R
 /I19 165 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F1.0 8 0 R
 >>
@@ -21395,7 +21395,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I20 167 0 R
 /I21 171 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F1.0 8 0 R
 >>
@@ -21915,7 +21915,7 @@ endobj
 /Contents 174 0 R
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I22 173 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F2.0 18 0 R
 /F1.0 8 0 R
@@ -23017,7 +23017,7 @@ endobj
 /F1.0 8 0 R
 /F4.0 53 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [187 0 R 189 0 R 191 0 R 192 0 R 193 0 R 194 0 R 195 0 R]
@@ -27918,7 +27918,7 @@ endobj
 /Font << /F1.0 8 0 R
 /F4.0 53 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [198 0 R]
@@ -29566,7 +29566,7 @@ endobj
 /F3.1 45 0 R
 /F6.0 157 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [201 0 R 204 0 R 205 0 R 206 0 R 207 0 R 208 0 R 209 0 R 210 0 R 211 0 R]
@@ -29587,11 +29587,11 @@ endobj
 << /Type /Font
 /BaseFont /AAAAEL+NotoSerif
 /Subtype /TrueType
-/FontDescriptor 773 0 R
+/FontDescriptor 772 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 775 0 R
-/ToUnicode 774 0 R
+/Widths 774 0 R
+/ToUnicode 773 0 R
 >>
 endobj
 203 0 obj
@@ -30387,7 +30387,7 @@ endobj
 /F4.0 53 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [215 0 R 216 0 R]
@@ -30550,7 +30550,7 @@ endobj
 /Contents 219 0 R
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I23 217 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F1.0 8 0 R
 >>
@@ -30768,7 +30768,7 @@ endobj
 /Contents 224 0 R
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I24 222 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F1.0 8 0 R
 >>
@@ -31445,7 +31445,7 @@ endobj
 /Contents 229 0 R
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I25 227 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F2.0 18 0 R
 /F1.0 8 0 R
@@ -32688,7 +32688,7 @@ endobj
 /F3.1 45 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [246 0 R 247 0 R 248 0 R 249 0 R 252 0 R 253 0 R 254 0 R 255 0 R 257 0 R]
@@ -32988,7 +32988,7 @@ endobj
 /F4.0 53 0 R
 >>
 /XObject << /I26 262 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 >>
 /Annots [261 0 R 263 0 R]
@@ -35303,7 +35303,7 @@ endobj
 /F1.0 8 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 >>
@@ -37703,7 +37703,7 @@ endobj
 /F1.0 8 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [270 0 R 272 0 R]
@@ -39447,7 +39447,7 @@ endobj
 /F7.0 275 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 >>
@@ -39456,11 +39456,11 @@ endobj
 << /Type /Font
 /BaseFont /AAAAEM+NotoSerif-BoldItalic
 /Subtype /TrueType
-/FontDescriptor 777 0 R
+/FontDescriptor 776 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 779 0 R
-/ToUnicode 778 0 R
+/Widths 778 0 R
+/ToUnicode 777 0 R
 >>
 endobj
 276 0 obj
@@ -39864,7 +39864,7 @@ endobj
 /F2.0 18 0 R
 >>
 /XObject << /I27 283 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 >>
 /Annots [282 0 R 284 0 R]
@@ -42227,7 +42227,7 @@ endobj
 /F1.0 8 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 >>
@@ -42236,11 +42236,11 @@ endobj
 << /Type /Font
 /BaseFont /AAAAEN+mplus1mn-regular
 /Subtype /TrueType
-/FontDescriptor 781 0 R
+/FontDescriptor 780 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 783 0 R
-/ToUnicode 782 0 R
+/Widths 782 0 R
+/ToUnicode 781 0 R
 >>
 endobj
 288 0 obj
@@ -44323,7 +44323,7 @@ endobj
 /F1.0 8 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [292 0 R]
@@ -45968,7 +45968,7 @@ endobj
 /F6.0 157 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [295 0 R 296 0 R 297 0 R 298 0 R 299 0 R 300 0 R]
@@ -46841,7 +46841,7 @@ endobj
 /F1.0 8 0 R
 /F4.0 53 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 311 0 R 312 0 R 314 0 R]
@@ -48035,7 +48035,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I28 316 0 R
 /I29 320 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F1.0 8 0 R
 /F4.0 53 0 R
@@ -50423,7 +50423,7 @@ endobj
 /F6.0 157 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 >>
@@ -52258,7 +52258,7 @@ endobj
 /F2.0 18 0 R
 >>
 /XObject << /I30 328 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 >>
 /Annots [329 0 R]
@@ -54280,7 +54280,7 @@ endobj
 /F6.0 157 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [333 0 R 334 0 R 335 0 R 336 0 R 338 0 R]
@@ -56496,7 +56496,7 @@ endobj
 /Contents 340 0 R
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I31 339 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F1.0 8 0 R
 /F4.0 53 0 R
@@ -58504,7 +58504,7 @@ endobj
 /F6.0 157 0 R
 /F8.0 345 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [346 0 R 347 0 R 348 0 R]
@@ -58517,11 +58517,11 @@ endobj
 << /Type /Font
 /BaseFont /AAAAEO+mplus1mn-italic
 /Subtype /TrueType
-/FontDescriptor 785 0 R
+/FontDescriptor 784 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 787 0 R
-/ToUnicode 786 0 R
+/Widths 786 0 R
+/ToUnicode 785 0 R
 >>
 endobj
 346 0 obj
@@ -60777,7 +60777,7 @@ endobj
 /F1.0 8 0 R
 /F8.0 345 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [351 0 R 352 0 R 353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R]
@@ -62353,7 +62353,7 @@ endobj
 /F1.0 8 0 R
 /F8.0 345 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [361 0 R 362 0 R 363 0 R 364 0 R]
@@ -64589,7 +64589,7 @@ endobj
 /F1.0 8 0 R
 /F8.0 345 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R]
@@ -65782,7 +65782,7 @@ endobj
 /F1.0 8 0 R
 /F8.0 345 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [376 0 R 377 0 R]
@@ -65939,7 +65939,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I32 159 0 R
 /I33 383 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F1.0 8 0 R
 /F2.0 18 0 R
@@ -66149,7 +66149,7 @@ endobj
 /F1.0 8 0 R
 >>
 /XObject << /I34 159 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 >>
 /Annots [390 0 R]
@@ -66438,7 +66438,7 @@ endobj
 /Contents 392 0 R
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I35 391 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F2.0 18 0 R
 /F1.0 8 0 R
@@ -66602,7 +66602,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I36 159 0 R
 /I37 403 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F1.0 8 0 R
 /F2.0 18 0 R
@@ -67301,7 +67301,7 @@ endobj
 /F2.0 18 0 R
 /F3.1 45 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [409 0 R 412 0 R 413 0 R 414 0 R 415 0 R]
@@ -67707,7 +67707,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I38 416 0 R
 /I39 420 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F6.0 157 0 R
 /F1.0 8 0 R
@@ -68126,7 +68126,7 @@ endobj
 /F4.0 53 0 R
 /F3.1 45 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [424 0 R 425 0 R]
@@ -68326,7 +68326,7 @@ endobj
 /F1.0 8 0 R
 >>
 /XObject << /I40 433 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 >>
 /Annots [432 0 R 434 0 R]
@@ -68869,7 +68869,7 @@ endobj
 /Contents 436 0 R
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I41 435 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F2.0 18 0 R
 /F1.0 8 0 R
@@ -71567,7 +71567,7 @@ endobj
 /F1.0 8 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [442 0 R 445 0 R 446 0 R 447 0 R 448 0 R]
@@ -74076,7 +74076,7 @@ endobj
 /F4.0 53 0 R
 /F4.1 287 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [451 0 R 452 0 R]
@@ -74677,7 +74677,7 @@ endobj
 /Contents 457 0 R
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I42 456 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F3.1 45 0 R
 /F1.0 8 0 R
@@ -76188,7 +76188,7 @@ endobj
 /Font << /F4.0 53 0 R
 /F1.0 8 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 >>
@@ -77934,7 +77934,7 @@ endobj
 /F1.0 8 0 R
 /F4.0 53 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [471 0 R 473 0 R]
@@ -79888,7 +79888,7 @@ endobj
 /F1.0 8 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [476 0 R]
@@ -80792,7 +80792,7 @@ endobj
 /F5.0 54 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [480 0 R]
@@ -82222,7 +82222,7 @@ endobj
 /F1.0 8 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 >>
@@ -83894,7 +83894,7 @@ endobj
 /F1.0 8 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [488 0 R]
@@ -85885,7 +85885,7 @@ endobj
 /F1.0 8 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [492 0 R]
@@ -87819,7 +87819,7 @@ endobj
 /F2.0 18 0 R
 /F4.0 53 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [496 0 R 497 0 R 500 0 R]
@@ -89306,7 +89306,7 @@ endobj
 /F1.0 8 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 >>
@@ -89441,7 +89441,7 @@ endobj
 /F1.0 8 0 R
 >>
 /XObject << /I43 508 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 >>
 /Annots [509 0 R]
@@ -90147,7 +90147,7 @@ endobj
 /Contents 511 0 R
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /XObject << /I44 510 0 R
-/Stamp1 701 0 R
+/Stamp1 700 0 R
 >>
 /Font << /F1.0 8 0 R
 /F2.0 18 0 R
@@ -91767,7 +91767,7 @@ endobj
 /F1.0 8 0 R
 /F4.0 53 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 526 0 R 527 0 R 528 0 R 529 0 R 530 0 R 531 0 R 532 0 R]
@@ -93315,7 +93315,7 @@ endobj
 /F4.0 53 0 R
 /F3.1 45 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 542 0 R 543 0 R 545 0 R]
@@ -96001,7 +96001,7 @@ endobj
 /F1.0 8 0 R
 /F3.1 45 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [548 0 R]
@@ -97874,7 +97874,7 @@ endobj
 /F2.0 18 0 R
 /F1.0 8 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [552 0 R 553 0 R 554 0 R 555 0 R 556 0 R]
@@ -99821,7 +99821,7 @@ endobj
 /F4.0 53 0 R
 /F6.0 157 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [561 0 R 562 0 R 563 0 R]
@@ -102271,7 +102271,7 @@ endobj
 /F1.0 8 0 R
 /F4.0 53 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [567 0 R]
@@ -102812,7 +102812,7 @@ endobj
 /Font << /F4.0 53 0 R
 /F1.0 8 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [570 0 R]
@@ -105263,7 +105263,7 @@ endobj
 /F6.0 157 0 R
 /F4.0 53 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 581 0 R 582 0 R 583 0 R 584 0 R 585 0 R]
@@ -108500,7 +108500,7 @@ endobj
 /Font << /F4.0 53 0 R
 /F1.0 8 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 >>
@@ -110288,7 +110288,7 @@ endobj
 /F1.0 8 0 R
 /F8.0 345 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [591 0 R 592 0 R 593 0 R 594 0 R 595 0 R 596 0 R 598 0 R 599 0 R]
@@ -111150,7 +111150,7 @@ endobj
 /F4.0 53 0 R
 /F2.0 18 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
 /Annots [602 0 R]
@@ -111168,7 +111168,7 @@ endobj
 >>
 endobj
 603 0 obj
-<< /Length 10407
+<< /Length 9792
 >>
 stream
 q
@@ -111657,48 +111657,11 @@ ET
 
 0.000 0.000 0.000 SCN
 0.000 0.000 0.000 scn
-
--0.500 Tc
-0.200 0.200 0.200 scn
-0.200 0.200 0.200 SCN
-
-BT
-56.88050000000001 448.28600000000034 Td
-/F1.0 10.5 Tf
-<a5> Tj
-ET
-
-0.000 0.000 0.000 SCN
-0.000 0.000 0.000 scn
-
-0.000 Tc
-0.259 0.545 0.792 scn
-0.259 0.545 0.792 SCN
-
-BT
-66.24000000000001 448.28600000000034 Td
-/F1.0 10.5 Tf
-<7064662e6a73> Tj
-ET
-
-0.000 0.000 0.000 SCN
-0.000 0.000 0.000 scn
-0.200 0.200 0.200 scn
-0.200 0.200 0.200 SCN
-
-BT
-93.48750000000001 448.28600000000034 Td
-/F1.0 10.5 Tf
-<20636f6d706f6e656e74202d20746f2076696577206120426c6f6220636f6e7461696e696e6720612050444620617320616e20696d616765> Tj
-ET
-
-0.000 0.000 0.000 SCN
-0.000 0.000 0.000 scn
 0.200 0.200 0.200 scn
 0.200 0.200 0.200 SCN
 
 BT
-48.24000000000001 420.50600000000037 Td
+48.24000000000001 442.28600000000034 Td
 /F1.0 10.5 Tf
 <436865636b2074686520> Tj
 ET
@@ -111709,7 +111672,7 @@ ET
 0.259 0.545 0.792 SCN
 
 BT
-99.6585 420.50600000000037 Td
+99.6585 442.28600000000034 Td
 /F1.0 10.5 Tf
 [<497369732041> 20.01953125 <64646f6e73>] TJ
 ET
@@ -111720,7 +111683,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-156.683794921875 420.50600000000037 Td
+156.683794921875 442.28600000000034 Td
 /F1.0 10.5 Tf
 <207765627369746520666f7220746865206d6f73742075702d746f2d64617465206c6973742e> Tj
 ET
@@ -111730,8 +111693,8 @@ ET
 q
 0.5 w
 0.933 0.933 0.933 SCN
-113.807 365.130 m
-113.807 404.690 l
+113.807 386.910 m
+113.807 426.470 l
 S
 Q
 0.098 0.251 0.486 scn
@@ -111742,7 +111705,7 @@ Q
 0.098 0.251 0.486 SCN
 
 BT
-76.73933333333335 376.33000000000044 Td
+76.73933333333335 398.1100000000004 Td
 /F3.1 24 Tf
 <21> Tj
 ET
@@ -111755,7 +111718,7 @@ ET
 1.026 Tw
 
 BT
-125.80666666666667 388.7260000000004 Td
+125.80666666666667 410.50600000000037 Td
 /F1.0 10.5 Tf
 [<4e6f746520746861742049736973206164646f6e732c207768696c65206d61696e7461696e65642062> 20.01953125 <7920417061636865204973697320636f6d6d6974746572732c20617265206e6f742070617274>] TJ
 ET
@@ -111768,7 +111731,7 @@ ET
 0.200 0.200 0.200 SCN
 
 BT
-125.80666666666667 372.94600000000037 Td
+125.80666666666667 394.72600000000034 Td
 /F1.0 10.5 Tf
 <6f6620746865204153462e> Tj
 ET
@@ -111810,10 +111773,10 @@ endobj
 /F4.0 53 0 R
 /F3.1 45 0 R
 >>
-/XObject << /Stamp1 701 0 R
+/XObject << /Stamp1 700 0 R
 >>
 >>
-/Annots [606 0 R 607 0 R 608 0 R 609 0 R 610 0 R 611 0 R 612 0 R 613 0 R 614 0 R 615 0 R 616 0 R]
+/Annots [606 0 R 607 0 R 608 0 R 609 0 R 610 0 R 611 0 R 612 0 R 613 0 R 614 0 R 615 0 R]
 >>
 endobj
 605 0 obj
@@ -111922,25 +111885,14 @@ endobj
 << /Border [0 0 0]
 /A << /Type /Action
 /S /URI
-/URI (http://github.com/isisaddons/isis-wicket-pdfjs)
->>
-/Subtype /Link
-/Rect [66.24000000000001 445.22000000000037 93.48750000000001 459.50000000000034]
-/Type /Annot
->>
-endobj
-616 0 obj
-<< /Border [0 0 0]
-/A << /Type /Action
-/S /URI
 /URI (http://www.isisaddons.org)
 >>
 /Subtype /Link
-/Rect [99.6585 417.4400000000004 156.683794921875 431.72000000000037]
+/Rect [99.6585 439.22000000000037 156.683794921875 453.50000000000034]
 /Type /Annot
 >>
 endobj
-617 0 obj
+616 0 obj
 << /Border [0 0 0]
 /Dest (__ugvw)
 /Subtype /Link
@@ -111948,7 +111900,7 @@ endobj
 /Type /Annot
 >>
 endobj
-618 0 obj
+617 0 obj
 << /Border [0 0 0]
 /Dest (__ugvw)
 /Subtype /Link
@@ -111956,7 +111908,7 @@ endobj
 /Type /Annot
 >>
 endobj
-619 0 obj
+618 0 obj
 << /Border [0 0 0]
 /Dest (other-guides)
 /Subtype /Link
@@ -111964,7 +111916,7 @@ endobj
 /Type /Annot
 >>
 endobj
-620 0 obj
+619 0 obj
 << /Border [0 0 0]
 /Dest (other-guides)
 /Subtype /Link
@@ -111972,7 +111924,7 @@ endobj
 /Type /Annot
 >>
 endobj
-621 0 obj
+620 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_features)
 /Subtype /Link
@@ -111980,7 +111932,7 @@ endobj
 /Type /Annot
 >>
 endobj
-622 0 obj
+621 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_features)
 /Subtype /Link
@@ -111988,7 +111940,7 @@ endobj
 /Type /Annot
 >>
 endobj
-623 0 obj
+622 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_features_recent-pages)
 /Subtype /Link
@@ -111996,7 +111948,7 @@ endobj
 /Type /Annot
 >>
 endobj
-624 0 obj
+623 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_features_recent-pages)
 /Subtype /Link
@@ -112004,7 +111956,7 @@ endobj
 /Type /Annot
 >>
 endobj
-625 0 obj
+624 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_features_bookmarked-pages)
 /Subtype /Link
@@ -112012,7 +111964,7 @@ endobj
 /Type /Annot
 >>
 endobj
-626 0 obj
+625 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_features_bookmarked-pages)
 /Subtype /Link
@@ -112020,7 +111972,7 @@ endobj
 /Type /Annot
 >>
 endobj
-627 0 obj
+626 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_features_hints-and-copy-url)
 /Subtype /Link
@@ -112028,7 +111980,7 @@ endobj
 /Type /Annot
 >>
 endobj
-628 0 obj
+627 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_features_hints-and-copy-url)
 /Subtype /Link
@@ -112036,7 +111988,7 @@ endobj
 /Type /Annot
 >>
 endobj
-629 0 obj
+628 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_features_titles-in-tables)
 /Subtype /Link
@@ -112044,7 +111996,7 @@ endobj
 /Type /Annot
 >>
 endobj
-630 0 obj
+629 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_features_titles-in-tables)
 /Subtype /Link
@@ -112052,7 +112004,7 @@ endobj
 /Type /Annot
 >>
 endobj
-631 0 obj
+630 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_features_blob-attachments)
 /Subtype /Link
@@ -112060,7 +112012,7 @@ endobj
 /Type /Annot
 >>
 endobj
-632 0 obj
+631 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_features_blob-attachments)
 /Subtype /Link
@@ -112068,7 +112020,7 @@ endobj
 /Type /Annot
 >>
 endobj
-633 0 obj
+632 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_features_user-registration)
 /Subtype /Link
@@ -112076,7 +112028,7 @@ endobj
 /Type /Annot
 >>
 endobj
-634 0 obj
+633 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_features_user-registration)
 /Subtype /Link
@@ -112084,7 +112036,7 @@ endobj
 /Type /Annot
 >>
 endobj
-635 0 obj
+634 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_layout)
 /Subtype /Link
@@ -112092,7 +112044,7 @@ endobj
 /Type /Annot
 >>
 endobj
-636 0 obj
+635 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_layout)
 /Subtype /Link
@@ -112100,7 +112052,7 @@ endobj
 /Type /Annot
 >>
 endobj
-637 0 obj
+636 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_layout_annotation-based)
 /Subtype /Link
@@ -112108,7 +112060,7 @@ endobj
 /Type /Annot
 >>
 endobj
-638 0 obj
+637 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_layout_annotation-based)
 /Subtype /Link
@@ -112116,7 +112068,7 @@ endobj
 /Type /Annot
 >>
 endobj
-639 0 obj
+638 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_layout_file-based)
 /Subtype /Link
@@ -112124,7 +112076,7 @@ endobj
 /Type /Annot
 >>
 endobj
-640 0 obj
+639 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_layout_file-based)
 /Subtype /Link
@@ -112132,7 +112084,7 @@ endobj
 /Type /Annot
 >>
 endobj
-641 0 obj
+640 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_layout_application-menu)
 /Subtype /Link
@@ -112140,7 +112092,7 @@ endobj
 /Type /Annot
 >>
 endobj
-642 0 obj
+641 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_layout_application-menu)
 /Subtype /Link
@@ -112148,7 +112100,7 @@ endobj
 /Type /Annot
 >>
 endobj
-643 0 obj
+642 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_layout_table-columns)
 /Subtype /Link
@@ -112156,7 +112108,7 @@ endobj
 /Type /Annot
 >>
 endobj
-644 0 obj
+643 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_layout_table-columns)
 /Subtype /Link
@@ -112164,7 +112116,7 @@ endobj
 /Type /Annot
 >>
 endobj
-645 0 obj
+644 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_configuration-properties)
 /Subtype /Link
@@ -112172,7 +112124,7 @@ endobj
 /Type /Annot
 >>
 endobj
-646 0 obj
+645 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_configuration-properties)
 /Subtype /Link
@@ -112180,7 +112132,7 @@ endobj
 /Type /Annot
 >>
 endobj
-647 0 obj
+646 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_configuration-properties_abbreviating-titles)
 /Subtype /Link
@@ -112188,7 +112140,7 @@ endobj
 /Type /Annot
 >>
 endobj
-648 0 obj
+647 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_configuration-properties_abbreviating-titles)
 /Subtype /Link
@@ -112196,7 +112148,7 @@ endobj
 /Type /Annot
 >>
 endobj
-649 0 obj
+648 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_configuration-properties_suppressing-remember-me)
 /Subtype /Link
@@ -112204,7 +112156,7 @@ endobj
 /Type /Annot
 >>
 endobj
-650 0 obj
+649 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_configuration-properties_suppressing-remember-me)
 /Subtype /Link
@@ -112212,7 +112164,7 @@ endobj
 /Type /Annot
 >>
 endobj
-651 0 obj
+650 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_configuration-properties_suppressing-sign-up)
 /Subtype /Link
@@ -112220,7 +112172,7 @@ endobj
 /Type /Annot
 >>
 endobj
-652 0 obj
+651 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_configuration-properties_suppressing-sign-up)
 /Subtype /Link
@@ -112228,7 +112180,7 @@ endobj
 /Type /Annot
 >>
 endobj
-653 0 obj
+652 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_configuration-properties_suppressing-password-reset)
 /Subtype /Link
@@ -112236,7 +112188,7 @@ endobj
 /Type /Annot
 >>
 endobj
-654 0 obj
+653 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_configuration-properties_suppressing-password-reset)
 /Subtype /Link
@@ -112244,7 +112196,7 @@ endobj
 /Type /Annot
 >>
 endobj
-655 0 obj
+654 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_configuration-properties_stripped-wicket-tags)
 /Subtype /Link
@@ -112252,7 +112204,7 @@ endobj
 /Type /Annot
 >>
 endobj
-656 0 obj
+655 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_configuration-properties_stripped-wicket-tags)
 /Subtype /Link
@@ -112260,7 +112212,7 @@ endobj
 /Type /Annot
 >>
 endobj
-657 0 obj
+656 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_configuration-properties_showing-theme-chooser)
 /Subtype /Link
@@ -112268,7 +112220,7 @@ endobj
 /Type /Annot
 >>
 endobj
-658 0 obj
+657 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_configuration-properties_showing-theme-chooser)
 /Subtype /Link
@@ -112276,7 +112228,7 @@ endobj
 /Type /Annot
 >>
 endobj
-659 0 obj
+658 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation)
 /Subtype /Link
@@ -112284,7 +112236,7 @@ endobj
 /Type /Annot
 >>
 endobj
-660 0 obj
+659 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation)
 /Subtype /Link
@@ -112292,7 +112244,7 @@ endobj
 /Type /Annot
 >>
 endobj
-661 0 obj
+660 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_brand-logo)
 /Subtype /Link
@@ -112300,7 +112252,7 @@ endobj
 /Type /Annot
 >>
 endobj
-662 0 obj
+661 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_brand-logo)
 /Subtype /Link
@@ -112308,7 +112260,7 @@ endobj
 /Type /Annot
 >>
 endobj
-663 0 obj
+662 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_default-theme)
 /Subtype /Link
@@ -112316,7 +112268,7 @@ endobj
 /Type /Annot
 >>
 endobj
-664 0 obj
+663 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_default-theme)
 /Subtype /Link
@@ -112324,7 +112276,7 @@ endobj
 /Type /Annot
 >>
 endobj
-665 0 obj
+664 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_welcome-page)
 /Subtype /Link
@@ -112332,7 +112284,7 @@ endobj
 /Type /Annot
 >>
 endobj
-666 0 obj
+665 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_welcome-page)
 /Subtype /Link
@@ -112340,7 +112292,7 @@ endobj
 /Type /Annot
 >>
 endobj
-667 0 obj
+666 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_about-page)
 /Subtype /Link
@@ -112348,7 +112300,7 @@ endobj
 /Type /Annot
 >>
 endobj
-668 0 obj
+667 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_about-page)
 /Subtype /Link
@@ -112356,7 +112308,7 @@ endobj
 /Type /Annot
 >>
 endobj
-669 0 obj
+668 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_tweaking-css-classes)
 /Subtype /Link
@@ -112364,7 +112316,7 @@ endobj
 /Type /Annot
 >>
 endobj
-670 0 obj
+669 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_tweaking-css-classes)
 /Subtype /Link
@@ -112372,7 +112324,7 @@ endobj
 /Type /Annot
 >>
 endobj
-671 0 obj
+670 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_cheap-n-cheerful-theme)
 /Subtype /Link
@@ -112380,7 +112332,7 @@ endobj
 /Type /Annot
 >>
 endobj
-672 0 obj
+671 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_cheap-n-cheerful-theme)
 /Subtype /Link
@@ -112388,7 +112340,7 @@ endobj
 /Type /Annot
 >>
 endobj
-673 0 obj
+672 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_using-different-css-file)
 /Subtype /Link
@@ -112396,7 +112348,7 @@ endobj
 /Type /Annot
 >>
 endobj
-674 0 obj
+673 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_using-different-css-file)
 /Subtype /Link
@@ -112404,7 +112356,7 @@ endobj
 /Type /Annot
 >>
 endobj
-675 0 obj
+674 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_custom-javascript)
 /Subtype /Link
@@ -112412,7 +112364,7 @@ endobj
 /Type /Annot
 >>
 endobj
-676 0 obj
+675 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_custom-javascript)
 /Subtype /Link
@@ -112420,7 +112372,7 @@ endobj
 /Type /Annot
 >>
 endobj
-677 0 obj
+676 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_auto-refresh)
 /Subtype /Link
@@ -112428,7 +112380,7 @@ endobj
 /Type /Annot
 >>
 endobj
-678 0 obj
+677 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_auto-refresh)
 /Subtype /Link
@@ -112436,7 +112388,7 @@ endobj
 /Type /Annot
 >>
 endobj
-679 0 obj
+678 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_request-parameters)
 /Subtype /Link
@@ -112444,7 +112396,7 @@ endobj
 /Type /Annot
 >>
 endobj
-680 0 obj
+679 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_customisation_request-parameters)
 /Subtype /Link
@@ -112452,7 +112404,7 @@ endobj
 /Type /Annot
 >>
 endobj
-681 0 obj
+680 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_extending)
 /Subtype /Link
@@ -112460,7 +112412,7 @@ endobj
 /Type /Annot
 >>
 endobj
-682 0 obj
+681 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_extending)
 /Subtype /Link
@@ -112468,7 +112420,7 @@ endobj
 /Type /Annot
 >>
 endobj
-683 0 obj
+682 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_extending_custom-bootstrap-theme)
 /Subtype /Link
@@ -112476,7 +112428,7 @@ endobj
 /Type /Annot
 >>
 endobj
-684 0 obj
+683 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_extending_custom-bootstrap-theme)
 /Subtype /Link
@@ -112484,7 +112436,7 @@ endobj
 /Type /Annot
 >>
 endobj
-685 0 obj
+684 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_extending_replacing-page-elements)
 /Subtype /Link
@@ -112492,7 +112444,7 @@ endobj
 /Type /Annot
 >>
 endobj
-686 0 obj
+685 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_extending_replacing-page-elements)
 /Subtype /Link
@@ -112500,7 +112452,7 @@ endobj
 /Type /Annot
 >>
 endobj
-687 0 obj
+686 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_extending_custom-pages)
 /Subtype /Link
@@ -112508,7 +112460,7 @@ endobj
 /Type /Annot
 >>
 endobj
-688 0 obj
+687 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_extending_custom-pages)
 /Subtype /Link
@@ -112516,7 +112468,7 @@ endobj
 /Type /Annot
 >>
 endobj
-689 0 obj
+688 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_extending_login-via-query-args-prototyping)
 /Subtype /Link
@@ -112524,7 +112476,7 @@ endobj
 /Type /Annot
 >>
 endobj
-690 0 obj
+689 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_extending_login-via-query-args-prototyping)
 /Subtype /Link
@@ -112532,7 +112484,7 @@ endobj
 /Type /Annot
 >>
 endobj
-691 0 obj
+690 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_hints-and-tips)
 /Subtype /Link
@@ -112540,7 +112492,7 @@ endobj
 /Type /Annot
 >>
 endobj
-692 0 obj
+691 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_hints-and-tips)
 /Subtype /Link
@@ -112548,7 +112500,7 @@ endobj
 /Type /Annot
 >>
 endobj
-693 0 obj
+692 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_hints-and-tips_per-user-themes)
 /Subtype /Link
@@ -112556,7 +112508,7 @@ endobj
 /Type /Annot
 >>
 endobj
-694 0 obj
+693 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_hints-and-tips_per-user-themes)
 /Subtype /Link
@@ -112564,7 +112516,7 @@ endobj
 /Type /Annot
 >>
 endobj
-695 0 obj
+694 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_hints-and-tips_i18n-label-in-wicket-viewer)
 /Subtype /Link
@@ -112572,7 +112524,7 @@ endobj
 /Type /Annot
 >>
 endobj
-696 0 obj
+695 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_hints-and-tips_i18n-label-in-wicket-viewer)
 /Subtype /Link
@@ -112580,7 +112532,7 @@ endobj
 /Type /Annot
 >>
 endobj
-697 0 obj
+696 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_hints-and-tips_svg-support)
 /Subtype /Link
@@ -112588,7 +112540,7 @@ endobj
 /Type /Annot
 >>
 endobj
-698 0 obj
+697 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_hints-and-tips_svg-support)
 /Subtype /Link
@@ -112596,7 +112548,7 @@ endobj
 /Type /Annot
 >>
 endobj
-699 0 obj
+698 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_isis-addons)
 /Subtype /Link
@@ -112604,7 +112556,7 @@ endobj
 /Type /Annot
 >>
 endobj
-700 0 obj
+699 0 obj
 << /Border [0 0 0]
 /Dest (_ugvw_isis-addons)
 /Subtype /Link
@@ -112612,7 +112564,7 @@ endobj
 /Type /Annot
 >>
 endobj
-701 0 obj
+700 0 obj
 << /Type /XObject
 /Subtype /Form
 /BBox [0 0 595.28 841.89]
@@ -112640,408 +112592,408 @@ Q
 
 endstream
 endobj
-702 0 obj
+701 0 obj
 << /Type /Outlines
 /Count 44
-/First 703 0 R
-/Last 746 0 R
+/First 702 0 R
+/Last 745 0 R
 >>
 endobj
-703 0 obj
+702 0 obj
 << /Title <feff005700690063006b006500740020005600690065007700650072>
-/Parent 702 0 R
+/Parent 701 0 R
 /Count 0
-/Next 704 0 R
+/Next 703 0 R
 /Dest [7 0 R /XYZ 0 841.89 null]
 >>
 endobj
-704 0 obj
+703 0 obj
 << /Title <feff005400610062006c00650020006f006600200043006f006e00740065006e00740073>
-/Parent 702 0 R
+/Parent 701 0 R
 /Count 0
-/Next 705 0 R
-/Prev 703 0 R
+/Next 704 0 R
+/Prev 702 0 R
 /Dest [10 0 R /XYZ 0 841.89 null]
 >>
 endobj
-705 0 obj
+704 0 obj
 << /Title <feff004300680061007000740065007200200031002e0020005700690063006b006500740020005600690065007700650072>
-/Parent 702 0 R
+/Parent 701 0 R
 /Count 1
-/First 706 0 R
-/Last 706 0 R
-/Next 707 0 R
-/Prev 704 0 R
+/First 705 0 R
+/Last 705 0 R
+/Next 706 0 R
+/Prev 703 0 R
 /Dest [14 0 R /XYZ 0 841.89 null]
 >>
 endobj
-706 0 obj
+705 0 obj
 << /Title <feff0031002e0031002e0020004f00740068006500720020004700750069006400650073>
-/Parent 705 0 R
+/Parent 704 0 R
 /Count 0
 /Dest [14 0 R /XYZ 0 666.0500000000002 null]
 >>
 endobj
-707 0 obj
+706 0 obj
 << /Title <feff004300680061007000740065007200200032002e002000460065006100740075007200650073002f0065006e0064002d0075007300650072002000750073006100670065>
-/Parent 702 0 R
+/Parent 701 0 R
 /Count 6
-/First 708 0 R
-/Last 713 0 R
-/Next 714 0 R
-/Prev 705 0 R
+/First 707 0 R
+/Last 712 0 R
+/Next 713 0 R
+/Prev 704 0 R
 /Dest [38 0 R /XYZ 0 841.89 null]
 >>
 endobj
-708 0 obj
+707 0 obj
 << /Title <feff0032002e0031002e00200052006500630065006e00740020007000610067006500730020002800640072006f007000200064006f0077006e0029>
-/Parent 707 0 R
+/Parent 706 0 R
 /Count 0
-/Next 709 0 R
+/Next 708 0 R
 /Dest [38 0 R /XYZ 0 721.6100000000001 null]
 >>
 endobj
-709 0 obj
+708 0 obj
 << /Title <feff0032002e0032002e00200042006f006f006b006d00610072006b00650064002000700061006700650073>
-/Parent 707 0 R
+/Parent 706 0 R
 /Count 0
-/Next 710 0 R
-/Prev 708 0 R
+/Next 709 0 R
+/Prev 707 0 R
 /Dest [50 0 R /XYZ 0 657.0100000000002 null]
 >>
 endobj
-710 0 obj
+709 0 obj
 << /Title <feff0032002e0033002e002000480069006e0074007300200061006e006400200063006f00700079002000550052004c>
-/Parent 707 0 R
+/Parent 706 0 R
 /Count 0
-/Next 711 0 R
-/Prev 709 0 R
+/Next 710 0 R
+/Prev 708 0 R
 /Dest [71 0 R /XYZ 0 164.3299999999998 null]
 >>
 endobj
-711 0 obj
+710 0 obj
 << /Title <feff0032002e0034002e0020005400690074006c0065007300200069006e0020005400610062006c00650073>
-/Parent 707 0 R
+/Parent 706 0 R
 /Count 0
-/Next 712 0 R
-/Prev 710 0 R
+/Next 711 0 R
+/Prev 709 0 R
 /Dest [100 0 R /XYZ 0 369.51254343293954 null]
 >>
 endobj
-712 0 obj
+711 0 obj
 << /Title <feff0032002e0035002e002000460069006c0065002000750070006c006f00610064002f0064006f0077006e006c006f00610064>
-/Parent 707 0 R
+/Parent 706 0 R
 /Count 0
-/Next 713 0 R
-/Prev 711 0 R
+/Next 712 0 R
+/Prev 710 0 R
 /Dest [112 0 R /XYZ 0 727.3000000000001 null]
 >>
 endobj
-713 0 obj
+712 0 obj
 << /Title <feff0032002e0036002e0020005500730065007200200052006500670069007300740072006100740069006f006e>
-/Parent 707 0 R
+/Parent 706 0 R
 /Count 0
-/Prev 712 0 R
+/Prev 711 0 R
 /Dest [149 0 R /XYZ 0 299.09000000000003 null]
 >>
 endobj
-714 0 obj
+713 0 obj
 << /Title <feff004300680061007000740065007200200033002e0020004c00610079006f00750074>
-/Parent 702 0 R
+/Parent 701 0 R
 /Count 4
-/First 715 0 R
-/Last 718 0 R
-/Next 719 0 R
-/Prev 707 0 R
+/First 714 0 R
+/Last 717 0 R
+/Next 718 0 R
+/Prev 706 0 R
 /Dest [185 0 R /XYZ 0 841.89 null]
 >>
 endobj
-715 0 obj
+714 0 obj
 << /Title <feff0033002e0031002e00200041006e006e006f0074006100740069006f006e002d006200610073006500640020004c00610079006f00750074>
-/Parent 714 0 R
+/Parent 713 0 R
 /Count 0
-/Next 716 0 R
+/Next 715 0 R
 /Dest [185 0 R /XYZ 0 646.4900000000001 null]
 >>
 endobj
-716 0 obj
+715 0 obj
 << /Title <feff0033002e0032002e002000460069006c0065002d006200610073006500640020004c00610079006f007500740073>
-/Parent 714 0 R
+/Parent 713 0 R
 /Count 0
-/Next 717 0 R
-/Prev 715 0 R
+/Next 716 0 R
+/Prev 714 0 R
 /Dest [230 0 R /XYZ 0 288.14823129251704 null]
 >>
 endobj
-717 0 obj
+716 0 obj
 << /Title <feff0033002e0033002e0020004100700070006c00690063006100740069006f006e0020004d0065006e00750020004c00610079006f00750074>
-/Parent 714 0 R
+/Parent 713 0 R
 /Count 0
-/Next 718 0 R
-/Prev 716 0 R
+/Next 717 0 R
+/Prev 715 0 R
 /Dest [302 0 R /XYZ 0 272.2700000000004 null]
 >>
 endobj
-718 0 obj
+717 0 obj
 << /Title <feff0033002e0034002e0020005400610062006c006500200043006f006c0075006d006e0073>
-/Parent 714 0 R
+/Parent 713 0 R
 /Count 0
-/Prev 717 0 R
+/Prev 716 0 R
 /Dest [331 0 R /XYZ 0 194.7299999999999 null]
 >>
 endobj
-719 0 obj
+718 0 obj
 << /Title <feff004300680061007000740065007200200034002e00200043006f006e00660069006700750072006100740069006f006e002000500072006f0070006500720074006900650073>
-/Parent 702 0 R
+/Parent 701 0 R
 /Count 6
-/First 720 0 R
-/Last 725 0 R
-/Next 726 0 R
-/Prev 714 0 R
+/First 719 0 R
+/Last 724 0 R
+/Next 725 0 R
+/Prev 713 0 R
 /Dest [343 0 R /XYZ 0 841.89 null]
 >>
 endobj
-720 0 obj
+719 0 obj
 << /Title <feff0034002e0031002e00200041006200620072006500760069006100740069006e0067002f007300750070007000720065007300730069006e00670020007400690074006c0065007300200069006e0020007400610062006c00650073>
-/Parent 719 0 R
+/Parent 718 0 R
 /Count 0
-/Next 721 0 R
+/Next 720 0 R
 /Dest [374 0 R /XYZ 0 586.53 null]
 >>
 endobj
-721 0 obj
+720 0 obj
 << /Title <feff0034002e0032002e0020005300750070007000720065007300730069006e00670020002700720065006d0065006d0062006500720020006d00650027>
-/Parent 719 0 R
+/Parent 718 0 R
 /Count 0
-/Next 722 0 R
-/Prev 720 0 R
+/Next 721 0 R
+/Prev 719 0 R
 /Dest [374 0 R /XYZ 0 247.99000000000007 null]
 >>
 endobj
-722 0 obj
+721 0 obj
 << /Title <feff0034002e0033002e0020005300750070007000720065007300730069006e006700200027007300690067006e0020007500700027>
-/Parent 719 0 R
+/Parent 718 0 R
 /Count 0
-/Next 723 0 R
-/Prev 721 0 R
+/Next 722 0 R
+/Prev 720 0 R
 /Dest [387 0 R /XYZ 0 841.89 null]
 >>
 endobj
-723 0 obj
+722 0 obj
 << /Title <feff0034002e0034002e0020005300750070007000720065007300730069006e00670020002700700061007300730077006f007200640020007200650073006500740027>
-/Parent 719 0 R
+/Parent 718 0 R
 /Count 0
-/Next 724 0 R
-/Prev 722 0 R
+/Next 723 0 R
+/Prev 721 0 R
 /Dest [393 0 R /XYZ 0 322.09249999999986 null]
 >>
 endobj
-724 0 obj
+723 0 obj
 << /Title <feff0034002e0035002e0020005300740072006900700070006500640020005700690063006b0065007400200074006100670073>
-/Parent 719 0 R
+/Parent 718 0 R
 /Count 0
-/Next 725 0 R
-/Prev 723 0 R
+/Next 724 0 R
+/Prev 722 0 R
 /Dest [407 0 R /XYZ 0 701.2700000000002 null]
 >>
 endobj
-725 0 obj
+724 0 obj
 << /Title <feff0034002e0036002e002000530068006f00770069006e0067002000610020007400680065006d0065002000630068006f006f007300650072>
-/Parent 719 0 R
+/Parent 718 0 R
 /Count 0
-/Prev 724 0 R
+/Prev 723 0 R
 /Dest [407 0 R /XYZ 0 457.9900000000003 null]
 >>
 endobj
-726 0 obj
+725 0 obj
 << /Title <feff004300680061007000740065007200200035002e00200043007500730074006f006d00690073006100740069006f006e>
-/Parent 702 0 R
+/Parent 701 0 R
 /Count 10
-/First 727 0 R
-/Last 736 0 R
-/Next 737 0 R
-/Prev 719 0 R
+/First 726 0 R
+/Last 735 0 R
+/Next 736 0 R
+/Prev 718 0 R
 /Dest [427 0 R /XYZ 0 841.89 null]
 >>
 endobj
-727 0 obj
+726 0 obj
 << /Title <feff0035002e0031002e0020004200720061006e00640020006c006f0067006f>
-/Parent 726 0 R
+/Parent 725 0 R
 /Count 0
-/Next 728 0 R
+/Next 727 0 R
 /Dest [427 0 R /XYZ 0 765.1700000000001 null]
 >>
 endobj
-728 0 obj
+727 0 obj
 << /Title <feff0035002e0032002e002000530070006500630069006600790069006e006700200061002000640065006600610075006c00740020007400680065006d0065>
-/Parent 726 0 R
+/Parent 725 0 R
+/Count 0
+/Next 728 0 R
+/Prev 726 0 R
+/Dest [441 0 R /XYZ 0 326.4899999999999 null]
+>>
+endobj
+728 0 obj
+<< /Title <feff0035002e0033002e002000570065006c0063006f006d006500200070006100670065>
+/Parent 725 0 R
 /Count 0
 /Next 729 0 R
 /Prev 727 0 R
-/Dest [441 0 R /XYZ 0 326.4899999999999 null]
+/Dest [450 0 R /XYZ 0 763.08 null]
 >>
 endobj
 729 0 obj
-<< /Title <feff0035002e0033002e002000570065006c0063006f006d006500200070006100670065>
-/Parent 726 0 R
+<< /Title <feff0035002e0034002e002000410062006f0075007400200070006100670065>
+/Parent 725 0 R
 /Count 0
 /Next 730 0 R
 /Prev 728 0 R
-/Dest [450 0 R /XYZ 0 763.08 null]
+/Dest [450 0 R /XYZ 0 254.12 null]
 >>
 endobj
 730 0 obj
-<< /Title <feff0035002e0034002e002000410062006f0075007400200070006100670065>
-/Parent 726 0 R
+<< /Title <feff0035002e0035002e00200054007700650061006b0069006e0067002000430053005300200063006c00610073007300650073>
+/Parent 725 0 R
 /Count 0
 /Next 731 0 R
 /Prev 729 0 R
-/Dest [450 0 R /XYZ 0 254.12 null]
+/Dest [467 0 R /XYZ 0 380.2900000000001 null]
 >>
 endobj
 731 0 obj
-<< /Title <feff0035002e0035002e00200054007700650061006b0069006e0067002000430053005300200063006c00610073007300650073>
-/Parent 726 0 R
+<< /Title <feff0035002e0036002e002000430068006500610070002d006e002d0063006800650065007200660075006c0020007400680065006d0065>
+/Parent 725 0 R
 /Count 0
 /Next 732 0 R
 /Prev 730 0 R
-/Dest [467 0 R /XYZ 0 380.2900000000001 null]
+/Dest [491 0 R /XYZ 0 274.5699999999998 null]
 >>
 endobj
 732 0 obj
-<< /Title <feff0035002e0036002e002000430068006500610070002d006e002d0063006800650065007200660075006c0020007400680065006d0065>
-/Parent 726 0 R
+<< /Title <feff0035002e0037002e0020005500730069006e00670020006100200064006900660066006500720065006e00740020004300530053002000660069006c0065>
+/Parent 725 0 R
 /Count 0
 /Next 733 0 R
 /Prev 731 0 R
-/Dest [491 0 R /XYZ 0 274.5699999999998 null]
+/Dest [495 0 R /XYZ 0 754.33 null]
 >>
 endobj
 733 0 obj
-<< /Title <feff0035002e0037002e0020005500730069006e00670020006100200064006900660066006500720065006e00740020004300530053002000660069006c0065>
-/Parent 726 0 R
+<< /Title <feff0035002e0038002e00200043007500730074006f006d0020004a006100760061007300630072006900700074>
+/Parent 725 0 R
 /Count 0
 /Next 734 0 R
 /Prev 732 0 R
-/Dest [495 0 R /XYZ 0 754.33 null]
+/Dest [495 0 R /XYZ 0 327.81000000000006 null]
 >>
 endobj
 734 0 obj
-<< /Title <feff0035002e0038002e00200043007500730074006f006d0020004a006100760061007300630072006900700074>
-/Parent 726 0 R
+<< /Title <feff0035002e0039002e0020004100750074006f002d007200650066007200650073006800200070006100670065>
+/Parent 725 0 R
 /Count 0
 /Next 735 0 R
 /Prev 733 0 R
-/Dest [495 0 R /XYZ 0 327.81000000000006 null]
->>
-endobj
-735 0 obj
-<< /Title <feff0035002e0039002e0020004100750074006f002d007200650066007200650073006800200070006100670065>
-/Parent 726 0 R
-/Count 0
-/Next 736 0 R
-/Prev 734 0 R
 /Dest [502 0 R /XYZ 0 493.53 null]
 >>
 endobj
-736 0 obj
+735 0 obj
 << /Title <feff0035002e00310030002e00200045006d00620065006400640065006400200056006900650077>
-/Parent 726 0 R
+/Parent 725 0 R
 /Count 0
-/Prev 735 0 R
+/Prev 734 0 R
 /Dest [505 0 R /XYZ 0 841.89 null]
 >>
 endobj
-737 0 obj
+736 0 obj
 << /Title <feff004300680061007000740065007200200036002e00200045007800740065006e00640069006e006700200074006800650020005600690065007700650072>
-/Parent 702 0 R
+/Parent 701 0 R
 /Count 4
-/First 738 0 R
-/Last 741 0 R
-/Next 742 0 R
-/Prev 726 0 R
+/First 737 0 R
+/Last 740 0 R
+/Next 741 0 R
+/Prev 725 0 R
 /Dest [516 0 R /XYZ 0 841.89 null]
 >>
 endobj
-738 0 obj
+737 0 obj
 << /Title <feff0036002e0031002e00200043007500730074006f006d00200042006f006f0074007300740072006100700020007400680065006d0065>
-/Parent 737 0 R
+/Parent 736 0 R
 /Count 0
-/Next 739 0 R
+/Next 738 0 R
 /Dest [516 0 R /XYZ 0 519.5900000000004 null]
 >>
 endobj
-739 0 obj
+738 0 obj
 << /Title <feff0036002e0032002e0020005200650070006c006100630069006e00670020007000610067006500200065006c0065006d0065006e00740073>
-/Parent 737 0 R
+/Parent 736 0 R
 /Count 0
-/Next 740 0 R
-/Prev 738 0 R
+/Next 739 0 R
+/Prev 737 0 R
 /Dest [534 0 R /XYZ 0 841.89 null]
 >>
 endobj
-740 0 obj
+739 0 obj
 << /Title <feff0036002e0033002e00200043007500730074006f006d002000700061006700650073>
-/Parent 737 0 R
+/Parent 736 0 R
 /Count 0
-/Next 741 0 R
-/Prev 739 0 R
+/Next 740 0 R
+/Prev 738 0 R
 /Dest [558 0 R /XYZ 0 445.7700000000001 null]
 >>
 endobj
-741 0 obj
+740 0 obj
 << /Title <feff0036002e0034002e0020004c006f00670069006e002000760069006100200051007500650072007900200041007200670073002000280066006f0072002000500072006f0074006f0074007900700069006e00670029>
-/Parent 737 0 R
+/Parent 736 0 R
 /Count 0
-/Prev 740 0 R
+/Prev 739 0 R
 /Dest [565 0 R /XYZ 0 194.05000000000013 null]
 >>
 endobj
-742 0 obj
+741 0 obj
 << /Title <feff004300680061007000740065007200200037002e002000480069006e0074007300200061006e006400200054006900700073>
-/Parent 702 0 R
+/Parent 701 0 R
 /Count 3
-/First 743 0 R
-/Last 745 0 R
-/Next 746 0 R
-/Prev 737 0 R
+/First 742 0 R
+/Last 744 0 R
+/Next 745 0 R
+/Prev 736 0 R
 /Dest [572 0 R /XYZ 0 841.89 null]
 >>
 endobj
-743 0 obj
+742 0 obj
 << /Title <feff0037002e0031002e0020005000650072002d00750073006500720020005400680065006d00650073>
-/Parent 742 0 R
+/Parent 741 0 R
 /Count 0
-/Next 744 0 R
+/Next 743 0 R
 /Dest [572 0 R /XYZ 0 557.1500000000003 null]
 >>
 endobj
-744 0 obj
+743 0 obj
 << /Title <feff0037002e0032002e00200048006f00770020006900310038006e00200074006800650020005700690063006b006500740020007600690065007700650072003f>
-/Parent 742 0 R
+/Parent 741 0 R
 /Count 0
-/Next 745 0 R
-/Prev 743 0 R
+/Next 744 0 R
+/Prev 742 0 R
 /Dest [589 0 R /XYZ 0 619.45 null]
 >>
 endobj
-745 0 obj
+744 0 obj
 << /Title <feff0037002e0033002e002000530056004700200053007500700070006f00720074>
-/Parent 742 0 R
+/Parent 741 0 R
 /Count 0
-/Prev 744 0 R
+/Prev 743 0 R
 /Dest [589 0 R /XYZ 0 237.54100000000005 null]
 >>
 endobj
-746 0 obj
+745 0 obj
 << /Title <feff004300680061007000740065007200200038002e00200041007000700065006e006400690078003a002000490073006900730020004100640064002d006f006e007300200028006e006f007400200041005300460029>
-/Parent 702 0 R
+/Parent 701 0 R
 /Count 0
-/Prev 742 0 R
+/Prev 741 0 R
 /Dest [604 0 R /XYZ 0 841.89 null]
 >>
 endobj
-747 0 obj
+746 0 obj
 << /Nums [0 << /P (i)
 >> 1 << /P (ii)
 >> 2 << /P (iii)
@@ -113079,7 +113031,7 @@ endobj
 >>]
 >>
 endobj
-748 0 obj
+747 0 obj
 << /Length1 15124
 /Length 9602
 /Filter [/FlateDecode]
@@ -113128,10 +113080,10 @@ O
 ^IS/Z`���u���ɠ�9��6��a��N!���F�>�3�m8���=v�X�&��.&�U��KkJ�+�+dUP��ZA���O�L^1�p�RpJvu�~�G����F�����a��,�!G��y�l�
~�?8��
 endstream
 endobj
-749 0 obj
+748 0 obj
 << /Type /FontDescriptor
 /FontName /AAAAEF+NotoSerif
-/FontFile2 748 0 R
+/FontFile2 747 0 R
 /FontBBox [-212 -250 1246 1047]
 /Flags 6
 /StemV 0
@@ -113142,7 +113094,7 @@ endobj
 /XHeight 1098
 >>
 endobj
-750 0 obj
+749 0 obj
 << /Length 1286
 /Filter [/FlateDecode]
 >>
@@ -113152,10 +113104,10 @@ x
 ���J���J��특���x��x��x��+�!Êw��B�x�b�x��+ށ�r�;��2��k�Μ�J�Y�e�Y��7+|��x�oS��7+[ƛețךyޢoV��浖-㭌���"���R�W�*��4Xq��C�^J�[(��^�1�»�y]���k�}�YM-x����V�z�����[YE�V�Y���_}/7�*�Y%��e�ӫq+��:��.�7�J���E�/�3Y(Y�*A�W	R��VJS�����:(u@c��D�]a*��f)�9J���)�o,#�\�Z>M�U��\�jPS�
{HS��M���j����{fk���yG�m[z*E�sa��>�&�ӫ���j%u���;�2^���W�[���®�v�[���2�쯲u�[���P�:���V̡�Յ>�M��Bi2.Ħ����ԇ!���d�k�`���=o��qWޕwdJF(�L164�U��)�x0E�~��Z?�=��/����ί���~:�o?$���������O
 endstream
 endobj
-751 0 obj
+750 0 obj
 [259 333 408 1000 1000 895 742 220 346 346 1000 559 250 310 250 288 559 559 559 559 559 559 559 559 559 559 286 286 559 559 559 500 920 705 653 613 727 623 589 713 792 367 356 700 623 937 763 742 604 742 655 543 612 716 674 1046 660 625 591 359 1000 359 1000 458 577 562 613 492 613 535 369 538 634 319 299 584 310 944 645 577 613 613 471 451 352 634 579 861 578 564 511 428 1000 428 559 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 361 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 857 259 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 250 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 100
 0 1000 1000 1000 1000 1000 1000]
 endobj
-752 0 obj
+751 0 obj
 << /Length1 12420
 /Length 8249
 /Filter [/FlateDecode]
@@ -113199,10 +113151,10 @@ h
 {�6��� ���Û��6N#��9��:���kk������1�LO�&O�h�R��!�#^�P�L�rvlhxl�R�C�r˜�:۾�!��=�Y�f��2s�5"(�lA�7�w30C336[�x_�u�V��w<j��! �6�Ig��(�����i.V�cU�V�E�'�6��-�y�֭�h|X4��پ��5���V��Fԫ��mIG�T7��?6�46;��?���W�L��]��Y�����aĥ�k��c혔�h� y=��ٍϘe�#;(GNc��:>5h��PL����Z�-����'A�q�B:�!�&J�F�:�xe(w4�9W��,-��f�8||���i����"��}@��G9p��T�f����\�}Y
 endstream
 endobj
-753 0 obj
+752 0 obj
 << /Type /FontDescriptor
 /FontName /AAAAEG+NotoSerif-Bold
-/FontFile2 752 0 R
+/FontFile2 751 0 R
 /FontBBox [-212 -250 1306 1058]
 /Flags 6
 /StemV 0
@@ -113213,7 +113165,7 @@ endobj
 /XHeight 1098
 >>
 endobj
-754 0 obj
+753 0 obj
 << /Length 1286
 /Filter [/FlateDecode]
 >>
@@ -113223,10 +113175,10 @@ x
 ���J���J��특���x��x��x��+�!Êw��B�x�b�x��+ށ�r�;��2��k�Μ�J�Y�e�Y��7+|��x�oS��7+[ƛețךyޢoV��浖-㭌���"���R�W�*��4Xq��C�^J�[(��^�1�»�y]���k�}�YM-x����V�z�����[YE�V�Y���_}/7�*�Y%��e�ӫq+��:��.�7�J���E�/�3Y(Y�*A�W	R��VJS�����:(u@c��D�]a*��f)�9J���)�o,#�\�Z>M�U��\�jPS�
{HS��M���j����{fk���yG�m[z*E�sa��>�&�ӫ���j%u���;�2^���W�[���®�v�[���2�쯲u�[���P�:���V̡�Յ>�M��Bi2.Ħ����ԇ!���d�k�`���=o��qWޕwdJF(�L164�U��)�x0E�~��Z?�=��/����ί���~:�o?$���������O
 endstream
 endobj
-755 0 obj
+754 0 obj
 [259 1000 1000 1000 1000 1000 1000 290 399 399 1000 1000 293 310 293 288 559 559 559 559 559 559 559 559 559 559 304 1000 1000 1000 1000 549 920 752 671 667 767 652 621 769 818 400 368 1000 653 952 788 787 638 787 707 585 652 747 698 1066 1000 1000 1000 1000 1000 1000 1000 1000 1000 599 648 526 648 570 407 560 666 352 345 636 352 985 666 612 645 647 522 487 404 666 605 855 645 579 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 279 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000
  1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000]
 endobj
-756 0 obj
+755 0 obj
 << /Length1 2320
 /Length 1272
 /Filter [/FlateDecode]
@@ -113239,10 +113191,10 @@ x
 �����I�t�
t��:�j蚎^��8N?�Ӑ�{f�`���U�(�
qD/#���U��_��pG*D ��zhU�sq�q�l�Z���j#��uYH#}G.��(�V����R�a��8���>��,��V!����}��>#c'G��Bd9�Ϧ�0���>�=���s?*���9�5O�[CT�8�t�Кy=o&Y�s(M�\/�,���7�{8�Aʸ�k��K�˓�ډ%��VϏo5~�u>�[��B�l2|�~�������*��]�l^�'�j���`
�>~���%��cY^�k�dz��^P�N$ŻF$Һi�;},�,F�F��rf�J�{��M&ɆlM��$�a�
 endstream
 endobj
-757 0 obj
+756 0 obj
 << /Type /FontDescriptor
 /FontName /AAAAEH+FontAwesome
-/FontFile2 756 0 R
+/FontFile2 755 0 R
 /FontBBox [-10 -155 1290 867]
 /Flags 4
 /StemV 0
@@ -113253,7 +113205,7 @@ endobj
 /XHeight 0
 >>
 endobj
-758 0 obj
+757 0 obj
 << /Length 239
 /Filter [/FlateDecode]
 >>
@@ -113261,10 +113213,10 @@ stream
 x�]�Mn� ������bI[uEM7Y�GM{&Ej9d���0���ֳ���ay���3�w�f��K�ƍ„��i�z��]�f�IH��}͸�E�:!?x�f��p�q�;!��"�0���<r?n)��!�}���Y��`y��~d�o�sOm�K-�I$f�R}�\/0���09�It-/*ŕeÌz�E�E�T�}�OM��Rŵ����lD��&,�|���RL�*��u|
 endstream
 endobj
-759 0 obj
+758 0 obj
 [250 857 571 1000 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500]
 endobj
-760 0 obj
+759 0 obj
 << /Length1 8696
 /Length 5972
 /Filter [/FlateDecode]
@@ -113300,10 +113252,10 @@ p
 ��O)i݄�f�����M09�"���w���8�R��z}����6�7�oz,>��]�3�V_S�>��Z'@�:f��M�M0=t���L�j�-���_0AoL���s%�[�9 ���6o���Ft�֒���*�$rc�ǃ}����+nn��`+��g<)pÌ4���������:���7�ԗ:CK��U�\L��e@Z��iPO�����
 endstream
 endobj
-761 0 obj
+760 0 obj
 << /Type /FontDescriptor
 /FontName /AAAAEI+mplus1mn-regular
-/FontFile2 760 0 R
+/FontFile2 759 0 R
 /FontBBox [0 -230 1000 860]
 /Flags 4
 /StemV 0
@@ -113314,7 +113266,7 @@ endobj
 /XHeight 0
 >>
 endobj
-762 0 obj
+761 0 obj
 << /Length 1286
 /Filter [/FlateDecode]
 >>
@@ -113324,10 +113276,10 @@ x
 ���J���J��특���x��x��x��+�!Êw��B�x�b�x��+ށ�r�;��2��k�Μ�J�Y�e�Y��7+|��x�oS��7+[ƛețךyޢoV��浖-㭌���"���R�W�*��4Xq��C�^J�[(��^�1�»�y]���k�}�YM-x����V�z�����[YE�V�Y���_}/7�*�Y%��e�ӫq+��:��.�7�J���E�/�3Y(Y�*A�W	R��VJS�����:(u@c��D�]a*��f)�9J���)�o,#�\�Z>M�U��\�jPS�
{HS��M���j����{fk���yG�m[z*E�sa��>�&�ӫ���j%u���;�2^���W�[���®�v�[���2�쯲u�[���P�:���V̡�Յ>�M��Bi2.Ħ����ԇ!���d�k�`���=o��qWޕwdJF(�L164�U��)�x0E�~��Z?�=��/����ί���~:�o?$���������O
 endstream
 endobj
-763 0 obj
+762 0 obj
 [500 500 500 500 500 500 500 1000 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 1000 500 1000 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 10
 00 1000 1000 1000 1000 1000 1000]
 endobj
-764 0 obj
+763 0 obj
 << /Length1 2328
 /Length 1338
 /Filter [/FlateDecode]
@@ -113342,10 +113294,10 @@ hMa
 �4k@�$��H�� �ew�·�f�(�W�¸�'����6w�.Jpc4��[��Ac��\p����-����K��"��	z���
 endstream
 endobj
-765 0 obj
+764 0 obj
 << /Type /FontDescriptor
 /FontName /AAAAEJ+mplus-1p-regular
-/FontFile2 764 0 R
+/FontFile2 763 0 R
 /FontBBox [-109 -288 1403 1075]
 /Flags 4
 /StemV 0
@@ -113356,7 +113308,7 @@ endobj
 /XHeight 0
 >>
 endobj
-766 0 obj
+765 0 obj
 << /Length 1286
 /Filter [/FlateDecode]
 >>
@@ -113366,10 +113318,10 @@ x
 ���J���J��특���x��x��x��+�!Êw��B�x�b�x��+ށ�r�;��2��k�Μ�J�Y�e�Y��7+|��x�oS��7+[ƛețךyޢoV��浖-㭌���"���R�W�*��4Xq��C�^J�[(��^�1�»�y]���k�}�YM-x����V�z�����[YE�V�Y���_}/7�*�Y%��e�ӫq+��:��.�7�J���E�/�3Y(Y�*A�W	R��VJS�����:(u@c��D�]a*��f)�9J���)�o,#�\�Z>M�U��\�jPS�
{HS��M���j����{fk���yG�m[z*E�sa��>�&�ӫ���j%u���;�2^���W�[���®�v�[���2�쯲u�[���P�:���V̡�Յ>�M��Bi2.Ħ����ԇ!���d�k�`���=o��qWޕwdJF(�L164�U��)�x0E�~��Z?�=��/����ί���~:�o?$���������O
 endstream
 endobj
-767 0 obj
+766 0 obj
 [1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 288 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 10
 00 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000]
 endobj
-768 0 obj
+767 0 obj
 << /Length1 7408
 /Length 4952
 /Filter [/FlateDecode]
@@ -113402,10 +113354,10 @@ NLJ~
 �|[��`����k.ry�AΠ'�E������9�\�|�2���d|X�K��r)K��RR)��
=J=)�ݑ�j��!ȇ!?�S�C�q�O��h� ����|8�Ӈ�p�O_�h,3M�{�f^�������Z����Ԥ���UM��D�I���dq�i�,u��y�R=JBvT�Q-�@�Ȋ�!U"!"�[��û��tdC%H�@R׬�Yu��W�ߥH?�^o�d[j+� 5�p�����@e��檊�Z�̠��L�����5`o����V�	��S��Zl��F��eW5h(
6���aQ�0<��A�?*��)�����n�D�ã4
VHp�:���H>Ӄ��W�&�+�P�G	s��u����\j�6����ˆ�i��[�� 3���S�Es@f��{h���H^�{���ɖ��r���b�~��d>�\�x-��:�\o�4ج�z�/A��TSܨT[:Dm2L��96�+oJ�+}��dT�S�0c���5qC��Ԣ/�]�/�Wj`���'n=̏��c�v^�t�󩞗W��5�	�1
 ��ϟ��h���J+�h�Ͽ���~���Y�C*M�(����c
�RK���j�$ԘK�"�3N3����p躐���Ɨ^���R>59?Xy�$��s��3$�r$��C8�y���rC�ˊ:ô��)a��k��͵�S�����@2
/	V�Py)P�<:��{|�K�vzM�5Lʷ�/ήW
\�r�,-��@:����<Z}
 endstream
 endobj
-769 0 obj
+768 0 obj
 << /Type /FontDescriptor
 /FontName /AAAAEK+NotoSerif-Italic
-/FontFile2 768 0 R
+/FontFile2 767 0 R
 /FontBBox [-254 -250 1238 1047]
 /Flags 70
 /StemV 0
@@ -113416,7 +113368,7 @@ endobj
 /XHeight 1098
 >>
 endobj
-770 0 obj
+769 0 obj
 << /Length 1286
 /Filter [/FlateDecode]
 >>
@@ -113426,10 +113378,10 @@ x
 ���J���J��특���x��x��x��+�!Êw��B�x�b�x��+ށ�r�;��2��k�Μ�J�Y�e�Y��7+|��x�oS��7+[ƛețךyޢoV��浖-㭌���"���R�W�*��4Xq��C�^J�[(��^�1�»�y]���k�}�YM-x����V�z�����[YE�V�Y���_}/7�*�Y%��e�ӫq+��:��.�7�J���E�/�3Y(Y�*A�W	R��VJS�����:(u@c��D�]a*��f)�9J���)�o,#�\�Z>M�U��\�jPS�
{HS��M���j����{fk���yG�m[z*E�sa��>�&�ӫ���j%u���;�2^���W�[���®�v�[���2�쯲u�[���P�:���V̡�Յ>�M��Bi2.Ħ����ԇ!���d�k�`���=o��qWޕwdJF(�L164�U��)�x0E�~��Z?�=��/����ί���~:�o?$���������O
 endstream
 endobj
-771 0 obj
+770 0 obj
 [259 1000 1000 1000 1000 1000 1000 1000 346 346 1000 1000 250 1000 250 288 1000 559 559 559 1000 1000 1000 1000 1000 1000 286 1000 1000 1000 1000 500 1000 705 1000 626 1000 623 589 1000 1000 367 1000 1000 1000 1000 1000 1000 620 1000 664 1000 612 729 674 1044 1000 1000 1000 1000 1000 1000 1000 1000 1000 579 562 486 579 493 317 556 599 304 1000 568 304 895 599 574 577 1000 467 463 368 599 538 818 545 527 511 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 250 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 10
 00 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000]
 endobj
-772 0 obj
+771 0 obj
 << /Length1 2272
 /Length 1073
 /Filter [/FlateDecode]
@@ -113440,10 +113392,10 @@ x
 �T���dx9 gP2�$i�[V-t\�S���e�-&Z����mb��b1�q������쁾K3ooo�-},E'�O1o��I��Ys��:����57��X'p�H&
W.��'�rYV`�,�B���09ZGG�d�CC���x6����>�����RZ�}g�UfyV��ElUV��ת˳i��k�E5�QS���G��TXxKXf�W9�����i�Wff�}��Ÿ�H^�ƾ��éÙ�:��7��P��Y�}�
 endstream
 endobj
-773 0 obj
+772 0 obj
 << /Type /FontDescriptor
 /FontName /AAAAEL+NotoSerif
-/FontFile2 772 0 R
+/FontFile2 771 0 R
 /FontBBox [-212 -250 1246 1047]
 /Flags 6
 /StemV 0
@@ -113454,7 +113406,7 @@ endobj
 /XHeight 1098
 >>
 endobj
-774 0 obj
+773 0 obj
 << /Length 227
 /Filter [/FlateDecode]
 >>
@@ -113463,10 +113415,10 @@ x
 �wJv�>DG���,ŒK����[n�u��,$�ӱ\����ln�8=�4バo�B\��u�XO{�?�b,������C/&��A6�<:�C9���m|�o�����ᖍE2qA1(�����Y����6$�����c�Y��F�����sٝ�#�3�,5E�x�TN�R�~m^o�
 endstream
 endobj
-775 0 obj
+774 0 obj
 [259 200 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 100
 0 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000]
 endobj
-776 0 obj
+775 0 obj
 << /Length1 2816
 /Length 1557
 /Filter [/FlateDecode]
@@ -113482,10 +113434,10 @@ x
 �^l�.���«'=���a��(x��[���xM�^�R�:/�]�A��5m�����t
 endstream
 endobj
-777 0 obj
+776 0 obj
 << /Type /FontDescriptor
 /FontName /AAAAEM+NotoSerif-BoldItalic
-/FontFile2 776 0 R
+/FontFile2 775 0 R
 /FontBBox [-265 -250 1289 1058]
 /Flags 70
 /StemV 0
@@ -113496,7 +113448,7 @@ endobj
 /XHeight 1098
 >>
 endobj
-778 0 obj
+777 0 obj
 << /Length 1286
 /Filter [/FlateDecode]
 >>
@@ -113506,10 +113458,10 @@ x
 ���J���J��특���x��x��x��+�!Êw��B�x�b�x��+ށ�r�;��2��k�Μ�J�Y�e�Y��7+|��x�oS��7+[ƛețךyޢoV��浖-㭌���"���R�W�*��4Xq��C�^J�[(��^�1�»�y]���k�}�YM-x����V�z�����[YE�V�Y���_}/7�*�Y%��e�ӫq+��:��.�7�J���E�/�3Y(Y�*A�W	R��VJS�����:(u@c��D�]a*��f)�9J���)�o,#�\�Z>M�U��\�jPS�
{HS��M���j����{fk���yG�m[z*E�sa��>�&�ӫ���j%u���;�2^���W�[���®�v�[���2�쯲u�[���P�:���V̡�Յ>�M��Bi2.Ħ����ԇ!���d�k�`���=o��qWޕwdJF(�L164�U��)�x0E�~��Z?�=��/����ί���~:�o?$���������O
 endstream
 endobj
-779 0 obj
+778 0 obj
 [1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 671 618 1000 1000 1000 1000 416 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000
  1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000]
 endobj
-780 0 obj
+779 0 obj
 << /Length1 2736
 /Length 1583
 /Filter [/FlateDecode]
@@ -113522,10 +113474,10 @@ O
 �0�7��8/
 endstream
 endobj
-781 0 obj
+780 0 obj
 << /Type /FontDescriptor
 /FontName /AAAAEN+mplus1mn-regular
-/FontFile2 780 0 R
+/FontFile2 779 0 R
 /FontBBox [0 -230 1000 860]
 /Flags 4
 /StemV 0
@@ -113536,7 +113488,7 @@ endobj
 /XHeight 0
 >>
 endobj
-782 0 obj
+781 0 obj
 << /Length 236
 /Filter [/FlateDecode]
 >>
@@ -113544,10 +113496,10 @@ stream
 x�]P�n� ���-/�	��R!��Ҹ�Cq�Rh��}�;]��f4;�a�yx���?(�38,�72�>�^��&�X�fщ�b�5�2AJ�?��f���l����E�a���y,|�R��C��)]	z��M/�َ�-����x�6��� �eL��&m�t��ɮS�9�0���j���hbR�Ů+��^IqzjP4�W�ؠhY7WM����5Q)ڎ��n>��~)���Bft\
 endstream
 endobj
-783 0 obj
+782 0 obj
 [500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 10
 00 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000]
 endobj
-784 0 obj
+783 0 obj
 << /Length1 3852
 /Length 2615
 /Filter [/FlateDecode]
@@ -113563,10 +113515,10 @@ x
 l\��ŀp\�Ns"7>�B�y��2���\W:��\�W��\��L�)$_�	�f�bi��r���]NcpQ��p3+ӊl<w9c�����,���F�z�4ϥ{�|�-P���.�m�#os�u���@�5|tzϝ���:�~���w�Ok%.$���đ���#��v|��Q���!��a�C�|�	·c�}a����X��l$.&U��e�h�P�q����g�O߯e0Ӄ���,}
 endstream
 endobj
-785 0 obj
+784 0 obj
 << /Type /FontDescriptor
 /FontName /AAAAEO+mplus1mn-italic
-/FontFile2 784 0 R
+/FontFile2 783 0 R
 /FontBBox [0 -230 1000 860]
 /Flags 4
 /StemV 0
@@ -113577,7 +113529,7 @@ endobj
 /XHeight 0
 >>
 endobj
-786 0 obj
+785 0 obj
 << /Length 1286
 /Filter [/FlateDecode]
 >>
@@ -113587,11 +113539,11 @@ x
 ���J���J��특���x��x��x��+�!Êw��B�x�b�x��+ށ�r�;��2��k�Μ�J�Y�e�Y��7+|��x�oS��7+[ƛețךyޢoV��浖-㭌���"���R�W�*��4Xq��C�^J�[(��^�1�»�y]���k�}�YM-x����V�z�����[YE�V�Y���_}/7�*�Y%��e�ӫq+��:��.�7�J���E�/�3Y(Y�*A�W	R��VJS�����:(u@c��D�]a*��f)�9J���)�o,#�\�Z>M�U��\�jPS�
{HS��M���j����{fk���yG�m[z*E�sa��>�&�ӫ���j%u���;�2^���W�[���®�v�[���2�쯲u�[���P�:���V̡�Յ>�M��Bi2.Ħ����ԇ!���d�k�`���=o��qWޕwdJF(�L164�U��)�x0E�~��Z?�=��/����ί���~:�o?$���������O
 endstream
 endobj
-787 0 obj
+786 0 obj
 [1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 500 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 500 1000 1000 500 1000 500 1000 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 500 500 1000 500 500 1000 1000 500 1000 500 500 500 500 500 1000 1000 500 500 500 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 
 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000]
 endobj
 xref
-0 788
+0 787
 0000000000 65535 f 
 0000000015 00000 n 
 0000000263 00000 n 
@@ -114196,195 +114148,194 @@ xref
 0004272541 00000 n 
 0004272800 00000 n 
 0004273078 00000 n 
-0004283540 00000 n 
-0004283892 00000 n 
-0004283938 00000 n 
-0004284140 00000 n 
-0004284349 00000 n 
-0004284570 00000 n 
-0004284792 00000 n 
-0004285033 00000 n 
-0004285266 00000 n 
-0004285498 00000 n 
-0004285736 00000 n 
-0004285977 00000 n 
-0004286211 00000 n 
-0004286412 00000 n 
-0004286541 00000 n 
-0004286661 00000 n 
-0004286786 00000 n 
-0004286912 00000 n 
-0004287060 00000 n 
-0004287199 00000 n 
-0004287360 00000 n 
-0004287512 00000 n 
-0004287675 00000 n 
-0004287831 00000 n 
-0004287996 00000 n 
-0004288154 00000 n 
-0004288328 00000 n 
-0004288495 00000 n 
-0004288671 00000 n 
-0004288847 00000 n 
-0004289024 00000 n 
-0004289201 00000 n 
-0004289355 00000 n 
-0004289512 00000 n 
-0004289686 00000 n 
-0004289860 00000 n 
-0004290028 00000 n 
-0004290196 00000 n 
-0004290370 00000 n 
-0004290544 00000 n 
-0004290714 00000 n 
-0004290886 00000 n 
-0004291061 00000 n 
-0004291236 00000 n 
-0004291419 00000 n 
-0004291625 00000 n 
-0004291825 00000 n 
-0004292025 00000 n 
-0004292211 00000 n 
-0004292408 00000 n 
-0004292601 00000 n 
-0004292804 00000 n 
-0004292999 00000 n 
-0004293196 00000 n 
-0004293393 00000 n 
-0004293590 00000 n 
-0004293744 00000 n 
-0004293909 00000 n 
-0004294083 00000 n 
-0004294259 00000 n 
-0004294439 00000 n 
-0004294619 00000 n 
-0004294797 00000 n 
-0004294975 00000 n 
-0004295140 00000 n 
-0004295315 00000 n 
-0004295489 00000 n 
-0004295674 00000 n 
-0004295863 00000 n 
-0004296052 00000 n 
-0004296232 00000 n 
-0004296423 00000 n 
-0004296596 00000 n 
-0004296780 00000 n 
-0004296955 00000 n 
-0004297132 00000 n 
-0004297305 00000 n 
-0004297488 00000 n 
-0004297648 00000 n 
-0004297808 00000 n 
-0004297993 00000 n 
-0004298178 00000 n 
-0004298364 00000 n 
-0004298550 00000 n 
-0004298725 00000 n 
-0004298900 00000 n 
-0004299082 00000 n 
-0004299275 00000 n 
-0004299428 00000 n 
-0004299593 00000 n 
-0004299752 00000 n 
-0004299922 00000 n 
-0004300104 00000 n 
-0004300286 00000 n 
-0004300452 00000 n 
-0004300618 00000 n 
-0004300780 00000 n 
-0004300942 00000 n 
-0004301229 00000 n 
-0004301307 00000 n 
-0004301468 00000 n 
-0004301660 00000 n 
-0004301909 00000 n 
-0004302084 00000 n 
-0004302373 00000 n 
-0004302610 00000 n 
-0004302829 00000 n 
-0004303056 00000 n 
-0004303277 00000 n 
-0004303513 00000 n 
-0004303724 00000 n 
-0004303946 00000 n 
-0004304180 00000 n 
-0004304409 00000 n 
-0004304657 00000 n 
-0004304851 00000 n 
-0004305145 00000 n 
-0004305440 00000 n 
-0004305697 00000 n 
-0004305926 00000 n 
-0004306195 00000 n 
-0004306431 00000 n 
-0004306665 00000 n 
-0004306916 00000 n 
-0004307098 00000 n 
-0004307358 00000 n 
-0004307551 00000 n 
-0004307736 00000 n 
-0004307972 00000 n 
-0004308216 00000 n 
-0004308465 00000 n 
-0004308690 00000 n 
-0004308903 00000 n 
-0004309090 00000 n 
-0004309368 00000 n 
-0004309598 00000 n 
-0004309835 00000 n 
-0004310039 00000 n 
-0004310334 00000 n 
-0004310588 00000 n 
-0004310790 00000 n 
-0004311043 00000 n 
-0004311230 00000 n 
-0004311513 00000 n 
-0004312110 00000 n 
-0004321804 00000 n 
-0004322020 00000 n 
-0004323383 00000 n 
-0004324430 00000 n 
-0004332771 00000 n 
-0004332992 00000 n 
-0004334355 00000 n 
-0004335426 00000 n 
-0004336789 00000 n 
-0004337000 00000 n 
-0004337315 00000 n 
-0004338231 00000 n 
-0004344294 00000 n 
-0004344508 00000 n 
-0004345871 00000 n 
-0004346919 00000 n 
-0004348348 00000 n 
-0004348566 00000 n 
-0004349929 00000 n 
-0004351067 00000 n 
-0004356110 00000 n 
-0004356336 00000 n 
-0004357699 00000 n 
-0004358792 00000 n 
-0004359956 00000 n 
-0004360172 00000 n 
-0004360475 00000 n 
-0004361612 00000 n 
-0004363260 00000 n 
-0004363490 00000 n 
-0004364853 00000 n 
-0004365989 00000 n 
-0004367663 00000 n 
-0004367877 00000 n 
-0004368189 00000 n 
-0004369327 00000 n 
-0004372033 00000 n 
-0004372246 00000 n 
-0004373609 00000 n 
+0004282924 00000 n 
+0004283268 00000 n 
+0004283314 00000 n 
+0004283516 00000 n 
+0004283725 00000 n 
+0004283946 00000 n 
+0004284168 00000 n 
+0004284409 00000 n 
+0004284642 00000 n 
+0004284874 00000 n 
+0004285112 00000 n 
+0004285353 00000 n 
+0004285555 00000 n 
+0004285684 00000 n 
+0004285804 00000 n 
+0004285929 00000 n 
+0004286055 00000 n 
+0004286203 00000 n 
+0004286342 00000 n 
+0004286503 00000 n 
+0004286655 00000 n 
+0004286818 00000 n 
+0004286974 00000 n 
+0004287139 00000 n 
+0004287297 00000 n 
+0004287471 00000 n 
+0004287638 00000 n 
+0004287814 00000 n 
+0004287990 00000 n 
+0004288167 00000 n 
+0004288344 00000 n 
+0004288498 00000 n 
+0004288655 00000 n 
+0004288829 00000 n 
+0004289003 00000 n 
+0004289171 00000 n 
+0004289339 00000 n 
+0004289513 00000 n 
+0004289687 00000 n 
+0004289857 00000 n 
+0004290029 00000 n 
+0004290204 00000 n 
+0004290379 00000 n 
+0004290562 00000 n 
+0004290768 00000 n 
+0004290968 00000 n 
+0004291168 00000 n 
+0004291354 00000 n 
+0004291551 00000 n 
+0004291744 00000 n 
+0004291947 00000 n 
+0004292142 00000 n 
+0004292339 00000 n 
+0004292536 00000 n 
+0004292733 00000 n 
+0004292887 00000 n 
+0004293052 00000 n 
+0004293226 00000 n 
+0004293402 00000 n 
+0004293582 00000 n 
+0004293762 00000 n 
+0004293940 00000 n 
+0004294118 00000 n 
+0004294283 00000 n 
+0004294458 00000 n 
+0004294632 00000 n 
+0004294817 00000 n 
+0004295006 00000 n 
+0004295195 00000 n 
+0004295375 00000 n 
+0004295566 00000 n 
+0004295739 00000 n 
+0004295923 00000 n 
+0004296098 00000 n 
+0004296275 00000 n 
+0004296448 00000 n 
+0004296631 00000 n 
+0004296791 00000 n 
+0004296951 00000 n 
+0004297136 00000 n 
+0004297321 00000 n 
+0004297507 00000 n 
+0004297693 00000 n 
+0004297868 00000 n 
+0004298043 00000 n 
+0004298225 00000 n 
+0004298418 00000 n 
+0004298571 00000 n 
+0004298736 00000 n 
+0004298895 00000 n 
+0004299065 00000 n 
+0004299247 00000 n 
+0004299429 00000 n 
+0004299595 00000 n 
+0004299761 00000 n 
+0004299923 00000 n 
+0004300085 00000 n 
+0004300372 00000 n 
+0004300450 00000 n 
+0004300611 00000 n 
+0004300803 00000 n 
+0004301052 00000 n 
+0004301227 00000 n 
+0004301516 00000 n 
+0004301753 00000 n 
+0004301972 00000 n 
+0004302199 00000 n 
+0004302420 00000 n 
+0004302656 00000 n 
+0004302867 00000 n 
+0004303089 00000 n 
+0004303323 00000 n 
+0004303552 00000 n 
+0004303800 00000 n 
+0004303994 00000 n 
+0004304288 00000 n 
+0004304583 00000 n 
+0004304840 00000 n 
+0004305069 00000 n 
+0004305338 00000 n 
+0004305574 00000 n 
+0004305808 00000 n 
+0004306059 00000 n 
+0004306241 00000 n 
+0004306501 00000 n 
+0004306694 00000 n 
+0004306879 00000 n 
+0004307115 00000 n 
+0004307359 00000 n 
+0004307608 00000 n 
+0004307833 00000 n 
+0004308046 00000 n 
+0004308233 00000 n 
+0004308511 00000 n 
+0004308741 00000 n 
+0004308978 00000 n 
+0004309182 00000 n 
+0004309477 00000 n 
+0004309731 00000 n 
+0004309933 00000 n 
+0004310186 00000 n 
+0004310373 00000 n 
+0004310656 00000 n 
+0004311253 00000 n 
+0004320947 00000 n 
+0004321163 00000 n 
+0004322526 00000 n 
+0004323573 00000 n 
+0004331914 00000 n 
+0004332135 00000 n 
+0004333498 00000 n 
+0004334569 00000 n 
+0004335932 00000 n 
+0004336143 00000 n 
+0004336458 00000 n 
+0004337374 00000 n 
+0004343437 00000 n 
+0004343651 00000 n 
+0004345014 00000 n 
+0004346062 00000 n 
+0004347491 00000 n 
+0004347709 00000 n 
+0004349072 00000 n 
+0004350210 00000 n 
+0004355253 00000 n 
+0004355479 00000 n 
+0004356842 00000 n 
+0004357935 00000 n 
+0004359099 00000 n 
+0004359315 00000 n 
+0004359618 00000 n 
+0004360755 00000 n 
+0004362403 00000 n 
+0004362633 00000 n 
+0004363996 00000 n 
+0004365132 00000 n 
+0004366806 00000 n 
+0004367020 00000 n 
+0004367332 00000 n 
+0004368470 00000 n 
+0004371176 00000 n 
+0004371389 00000 n 
+0004372752 00000 n 
 trailer
-<< /Size 788
+<< /Size 787
 /Root 2 0 R
 /Info 1 0 R
 >>
 startxref
-4374724
+4373867
 %%EOF


[6/9] isis-site git commit: ISIS-1712: fixes tiny error in relesae guide

Posted by da...@apache.org.
ISIS-1712: fixes tiny error in relesae guide


Project: http://git-wip-us.apache.org/repos/asf/isis-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis-site/commit/fa1a7ca4
Tree: http://git-wip-us.apache.org/repos/asf/isis-site/tree/fa1a7ca4
Diff: http://git-wip-us.apache.org/repos/asf/isis-site/diff/fa1a7ca4

Branch: refs/heads/asf-site
Commit: fa1a7ca4e6241b6c13cc0ae87792499276984bb2
Parents: 3b078e0
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Sep 22 13:09:07 2017 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Sep 22 13:09:07 2017 +0100

----------------------------------------------------------------------
 content/elasticlunr/index.json  |    2 +-
 content/guides/cgcom/cgcom.html |    4 +-
 content/guides/cgcom/cgcom.pdf  | 1533 +++++++++++++++++-----------------
 3 files changed, 779 insertions(+), 760 deletions(-)
----------------------------------------------------------------------



[8/9] isis-site git commit: Merge branch 'ISIS-1712_pr-95'

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/8566a8ed/content/elasticlunr/index.json
----------------------------------------------------------------------
diff --git a/content/elasticlunr/index.json b/content/elasticlunr/index.json
index 786919e..4b1b0cb 100644
--- a/content/elasticlunr/index.json
+++ b/content/elasticlunr/index.json
@@ -1 +1 @@
-{"version":"0.9.5","fields":["title","body","description","url"],"ref":"id","documentStore":{"docs":{"372886":{"title":"Rows, full-width cols, and tabs","url":"guides/ugvw/ugvw.html#_rows_full_width_cols_and_tabs","body":"Rows, full-width cols, and tabs  The example layout consists of three rows: a row for the object/icon, a row containing a properties, and a row containing collections. In all three cases the row contains a single column spanning the full width of the page. For the property and collection rows, the column contains a tab group.  This corresponds to the following XML:  You will notice that one of the columns has an unreferencedActions attribute, while one of the tabGroups has a similar unreferencedCollections attribute. This topic is discussed in more detail below. ","description":" The example layout consists of three rows: a row for the object/icon, a row containing a properties, and a row containing collections. In all three cases the row contains a single column s
 panning the full width of the page. For the property and collection rows, the column contains a","id":372886},"2646929":{"title":"Apache Isis vs …​","url":"guides/ugfun/ugfun.html#_ugfun_core-concepts_apache-isis-vs","body":"Apache Isis vs …​  Many other frameworks promise rapid application development and provide automatically generated user interfaces, so how do they compare to Apache Isis? ","description":" Many other frameworks promise rapid application development and provide automatically generated user interfaces, so how do they compare to Apache Isis? ","id":2646929},"3836440":{"title":"Running","url":"guides/dg/dg.html#__dg_ide_intellij_running","body":"Running  Let’s see how to run both the app and the tests. ","description":" Let’s see how to run both the app and the tests. ","id":3836440},"11600575":{"title":"Using Contributions","url":"pages/tg/tg.html#_using_contributions","body":"Using Contributions  One of Apache Isis' most powerful features is the abilit
 y for the UI to combine functionality from domain services into the representation of an entity. The effect is similar to traits or mix-ins in other languages, however the \"mixing in\" is done at runtime, within the Apache Isis metamodel. In Apache Isis' terminology, we say that the domain service action is contributed to the entity.  Any action of a domain service that has a domain entity type as one of its parameter types will (by default) be contributed. If the service action takes more than one argument, or does not have safe semantics, then it will be contributed as an entity action. If the service action has precisely one parameter type (that of the entity) and has safe semantics then it will be contributed either as a collection or as a property (dependent on whether it returns a collection of a scalar).  Why are contributions so useful? Because the service action will match not on the entity type, but also on any of the entity’s supertypes (all the way up to java.lang.Obj
 ect). That means that you can apply the dependency inversion principle to ensure that the modules of your application have acyclic dependencies; but in the UI it can still appear as if there are bidirectional dependencies between those modules. The lack of bidirectional dependencies can help save your app degrading into a big ball of mud.  Finally, note that the layout of contributed actions/collections/properties can be specified using the .layout.json file (and it is highly recommended that you do so). ","description":" One of Apache Isis' most powerful features is the ability for the UI to combine functionality from domain services into the representation of an entity. The effect is similar to traits or mix-ins in other languages, however the \"mixing in\" is done at runtime, within the Apache Isis metamodel","id":11600575},"12649581":{"title":"Mark the version as released","url":"guides/cgcom/cgcom.html#_mark_the_version_as_released","body":"Mark the version as released  In JIRA
 , go to the administration section for the Apache Isis project and update the version as being released.  In the Kanban view this will have the effect of marking all tickets as released (clearing the \"done\" column). ","description":" In JIRA, go to the administration section for the Apache Isis project and update the version as being released. ","id":12649581},"13573617":{"title":"hide…​()","url":"guides/rgcms/rgcms.html#_rgcms_methods_prefixes_hide","body":"hide…​()  The hide…​() supporting method is called for properties, collections and actions. It allows the property/collection to be completely hidden from view.  It’s comparatively rare for properties or collections to be imperatively hidden from view, but actions are sometimes hidden or shown visible (as opposed to being just disabled, ie greyed out).  The signature of the supporting method is simply:  Returning true will hide the property, collection or action, returning false leaves it visible.  For example, t
 o hide an action:  Or, to hide a property: ","description":" The hide…​() supporting method is called for properties, collections and actions. It allows the property/collection to be completely hidden from view. ","id":13573617},"14971197":{"title":"Suppressing 'remember me'","url":"guides/ugvw/ugvw.html#_ugvw_configuration-properties_suppressing-remember-me","body":"Suppressing 'remember me'  The 'remember me' checkbox on the login page can be suppressed, if required, by setting a configuration flag. ","description":" The 'remember me' checkbox on the login page can be suppressed, if required, by setting a configuration flag. ","id":14971197},"16629694":{"title":"allowLateRegistration","url":"migration-notes/migration-notes.html#__code_allowlateregistration_code","body":"allowLateRegistration  One possible issue is that (as per ISIS-830) the EventBusService is now initialized as one of the first domain services; this is to ensure that any object lifecycle events caused by domai
 n services initializing themselves can be posted on the event bus for subscribers. The typical case for such lifecycle events to occur is from domain services that seed reference data; one such example can be found in the (non-ASF) Isis addons' security module.  In previous releases, the ordering of initialization for the EventBusService was undefined (but would typically be towards the \"end\" of the list of services. What this meant in practice is that it generally didn’t matter whether (domain service) subscribers were initialized before or after seed services.  Now, though, because the EventBusService is initialized early on, it proactively checks that all subscribers have been registered before any event posts occur (so that no events get missed). If any subscriber attempts to register after at least one event has been posted, then the service will fail fast and the framework will not start. The error looks something like:  To ensure that subscriber domain services are initia
 lized before \"seed\" domain services, the @DomainServiceLayout#menuOrder() attribute can be used. Normally this attribute is just used to order UI-visible services on the menu bars, but it also is used internally to sequence the internal list of services being initialized.  Alternatively, you can disable this checking within the EventBusService using:  If you do that, be aware that not all subscribers may not receive some events generated by other domain services.  For more details, see the EventBusService man page. ","description":" One possible issue is that (as per ISIS-830) the EventBusService is now initialized as one of the first domain services; this is to ensure that any object lifecycle events caused by domain services initializing themselves can be posted on the event bus for subscribers. The typical case for such","id":16629694},"17000573":{"title":"ObjectCreatedEvent","url":"guides/rgcms/rgcms.html#_rgcms_classes_lifecycleevent_ObjectCreatedEvent","body":"ObjectCreatedE
 vent  Subclass of AbstractLifecycleEvent, broadcast when an object is first instantiated using the DomainObjectContainer's #newTransientInstance(…​) method.  ObjectCreatedEvent.Default is the concrete implementation that is used. ","description":" Subclass of AbstractLifecycleEvent, broadcast when an object is first instantiated using the DomainObjectContainer's #newTransientInstance(…​) method. ","id":17000573},"17618894":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_20","body":"New Feature ","description":"","id":17618894},"17724516":{"title":"Multi-select action parameters","url":"guides/ugfun/ugfun.html#_multi_select_action_parameters","body":"Multi-select action parameters  As well as scalar values, action parameters can also be collections. For this to be valid, a choices or autoComplete supporting method must be provided.  For example, suppose we want to \"tag\" or \"label\" an object: ","description":" As well as scalar values, action pa
 rameters can also be collections. For this to be valid, a choices or autoComplete supporting method must be provided. ","id":17724516},"18445041":{"title":"Verifying Releases","url":"downloads.html#_verifying_releases","body":"Verifying Releases ","description":"","id":18445041},"19254915":{"title":"API & Implementation","url":"guides/rgsvc/rgsvc.html#_api_implementation_7","body":"API & Implementation  The API of Scratchpad service is:  This class (o.a.i.applib.services.scratchpad.Scratchpad) is also the implementation. And, as you can see, the service is just a request-scoped wrapper around a java.util.Map. ","description":" The API of Scratchpad service is: ","id":19254915},"21190750":{"title":"Run the archetype","url":"pages/tg/tg.html#_run_the_archetype","body":"Run the archetype  Throughout this tutorial you can, if you wish, just checkout from the github repo wherever you see a \"git checkout\" note:  Run the simpleapp archetype to build an empty Isis application. With the *n
 ix bash shell, use:  Adjust as necessary if using Windows cmd.exe or Powershell.  This will generate the app in a petclinic directory. Move the contents back: ","description":" Throughout this tutorial you can, if you wish, just checkout from the github repo wherever you see a \"git checkout\" note: ","id":21190750},"21212015":{"title":"Key features","url":"pages/powered-by/powered-by.html#_key_features","body":"Key features ","description":"","id":21212015},"21857601":{"title":"Other Guides","url":"guides/cgcom/cgcom.html#_other_guides","body":"Other Guides  Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides.  The user guides available are:  The reference guides are:  The remaining guides are:  This guide provides guidance for Apache Isis' own committers. ","description":" Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides. ","id":21857601},"23125949":{"title":"Edit
 ing","url":"guides/dg/dg.html#__dg_ide_intellij_hints-and-tips_editing","body":"Editing ","description":"","id":23125949},"23524101":{"title":"Collections","url":"guides/ugvw/ugvw.html#_collections","body":"Collections  In the final row the collections are placed in tabs, simply one collection per tab. This corresponds to the following XML:  As with properties, actions can be associated with collections; this indicates that they should be rendered in the collection’s header. ","description":" In the final row the collections are placed in tabs, simply one collection per tab. This corresponds to the following XML: ","id":23524101},"26509816":{"title":"Commit changes","url":"guides/cgcom/cgcom.html#__cgcom_cutting-a-release_releasing-core_commit-changes","body":"Commit changes  Commit any changes from the preceding steps: ","description":" Commit any changes from the preceding steps: ","id":26509816},"27806498":{"title":"renderedAsDayBefore()","url":"guides/rgant/rgant.html#_rgant-P
 arameterLayout_renderedAsDayBefore","body":"renderedAsDayBefore()  The renderedAsDayBefore() attribute applies only to date parameters whereby the date will be rendered as the day before the value actually held in the domain object. It is ignored for parameters of other types. This attribute is also supported for properties.  This behaviour might at first glance appear odd, but the rationale is to support the use case of a sequence of instances that represent adjacent intervals of time. In such cases there would typically be startDate and endDate properties, eg for all of Q2. Storing this as a half-closed interval — eg [1-Apr-2015, 1-July-2015) — can substantially simplify internal algorithms; the endDate of one interval will correspond to the startDate of the next.  However, from an end-user perspective the requirement may be to render the interval as a fully closed interval; eg the end date should be shown as 30-Jun-2015.  This attribute therefore bridges the gap; it presents 
 the information in a way that makes sense to an end-user, but also stores the domain object in a way that is easy work with internally.  For example: ","description":" The renderedAsDayBefore() attribute applies only to date parameters whereby the date will be rendered as the day before the value actually held in the domain object. It is ignored for parameters of other types. This attribute is also supported for properties. ","id":27806498},"31857620":{"title":"Interacting with the services","url":"guides/rgsvc/rgsvc.html#_interacting_with_the_services","body":"Interacting with the services  Typically domain objects will have little need to interact with the CommandContext and Command directly; what is more useful is that these are persisted in support of the various use cases identified above.  One case however where a domain object might want to obtain the Command is to determine whether it has been invoked in the foreground, or in the background. It can do this using the getExecu
 tedIn() method:  Although not often needed, this then allows the domain object to access the Command object through the CommandContext service. To expand th above example:  If run in the background, it might then notify the user (eg by email) if all work is done.  This leads us onto a related point, distinguishing the current effective user vs the originating \"real\" user. When running in the foreground, the current user can be obtained from the UserService, using:  If running in the background, however, then the current user will be the credentials of the background process, for example as run by a Quartz scheduler job.  The domain object can still obtain the original (\"effective\") user that caused the job to be created, using: ","description":" Typically domain objects will have little need to interact with the CommandContext and Command directly; what is more useful is that these are persisted in support of the various use cases identified above. ","id":31857620},"36734123":{"
 title":"Bug","url":"release-notes/release-notes.html#_bug_8","body":"Bug ","description":"","id":36734123},"39248326":{"title":"Runtime vs Noop implementation","url":"guides/rgfis/rgfis.html#_runtime_vs_noop_implementation","body":"Runtime vs Noop implementation  The framework provides two implementations:  The …​Default implementation takes priority over the …​Noop implementation. ","description":" The framework provides two implementations: ","id":39248326},"39290887":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_implementation_22","body":"Implementation  The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.container.DomainObjectContainerDefault). ","description":" The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.container.DomainObjectContainerDefault). ","id":39290887},"42240053":{"title":"Screenshots","url":"guides/ugvw/ugvw.html#_screenshots_9","body":"Screensho
 ts  The screenshot below shows the Isis addons example todoapp (not ASF) with a 'brand logo' image in its header:  A custom brand logo (typically larger) can also be specified for the signin page: ","description":" The screenshot below shows the Isis addons example todoapp (not ASF) with a 'brand logo' image in its header: ","id":42240053},"44483327":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_17","body":"New Feature ","description":"","id":44483327},"45128293":{"title":"getConfigurationProperties()","url":"guides/rgcms/rgcms.html#__rgcms_classes_AppManifest-bootstrapping_api_getConfigurationProperties","body":"getConfigurationProperties()  This method allow arbitrary other configuration properties to be overridden. One common use case is in conjunction with the getFixtures() method, discussed above: ","description":" This method allow arbitrary other configuration properties to be overridden. One common use case is in conjunction with the getFixtures
 () method, discussed above: ","id":45128293},"57327287":{"title":"cssClassFa()","url":"guides/rgant/rgant.html#_rgant-ViewModelLayout_cssClassFa","body":"cssClassFa()  The cssClassFa() attribute is used to specify the name of a Font Awesome icon name, to be rendered as the domain object’s icon.  These attribute can also be applied to domain objects to specify the object’s icon, and to actions to specify an icon for the action’s representation as a button or menu item.  If necessary the icon specified can be overridden by a particular object instance using the iconName() method.  For example:  There can be multiple \"fa-\" classes, eg to mirror or rotate the icon. There is no need to include the mandatory fa \"marker\" CSS class; it will be automatically added to the list. The fa- prefix can also be omitted from the class names; it will be prepended to each if required.  The related cssClassFaPosition() attribute is currently unused for domain objects; the icon is always render
 ed to the left. ","description":" The cssClassFa() attribute is used to specify the name of a Font Awesome icon name, to be rendered as the domain object’s icon. ","id":57327287},"64932464":{"title":"Other Guides","url":"guides/ugtst/ugtst.html#_other_guides","body":"Other Guides  Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides.  The user guides available are:  The reference guides are:  The remaining guides are: ","description":" Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides. ","id":64932464},"66604001":{"title":"@Programmatic","url":"guides/rgant/rgant.html#_rgant-Programmatic","body":"@Programmatic ","description":"","id":66604001},"68441589":{"title":"License headers","url":"guides/cgcom/cgcom.html#__cgcom_cutting-a-release_releasing-core_license-headers","body":"License headers  The Apache Release Audit Tool RAT (from the Apache Creadur project) checks
  for missing license header files. The parent pom.xml of each releasable module specifies the RAT Maven plugin, with a number of custom exclusions.  To run the RAT tool, use:  where rat.numUnapprovedLicenses property is set to a high figure, temporarily overriding the default value of 0. This will allow the command to run over all submodules, rather than failing after the first one. The command writes out a target\\rat.txt for each submodule. missing license notes are indicated using the key !???. The for command collates all the errors.  Investigate and fix any reported violations, typically by either:  To add missing headers, use the groovy script addmissinglicenses.groovy (in the scripts directory) to automatically insert missing headers for certain file types. The actual files checked are those with extensions specified in the line def fileEndings = [\".java\", \".htm\"]:  (If the -x is omitted then the script is run in \"dry run\" mode). Once you’ve fixed all issues, confirm 
 once more that apache-rat-plugin no longer reports any license violations, this time leaving the rat.numUnapprovedLicenses property to its default, 0: ","description":" The Apache Release Audit Tool RAT (from the Apache Creadur project) checks for missing license header files. The parent pom.xml of each releasable module specifies the RAT Maven plugin, with a number of custom exclusions. ","id":68441589},"73703450":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_29","body":"New Feature ","description":"","id":73703450},"75054401":{"title":"Supporting Method Prefixes","url":"guides/rgcms/rgcms.html#_rgcms_methods_prefixes","body":"Supporting Method Prefixes  Supporting methods are those that are associated with properties, collections and actions, providing additional imperative business rule checking and behaviour to be performed when the user interacts with those object members.  This association is performed by name matching. Thus, a property called \"f
 irstName\", derived from a method getFirstName() may have supporting methods hideFirstName(), disableFirstName() and validateFirstName(). Supporting methods are, therefore, each characterized by their own particular prefix.  The table below lists the method prefixes that are recognized as part of Apache Isis' default programming model. ","description":" Supporting methods are those that are associated with properties, collections and actions, providing additional imperative business rule checking and behaviour to be performed when the user interacts with those object members. ","id":75054401},"77231561":{"title":"Interaction Execution","url":"guides/rgcms/rgcms.html#_rgcms_schema-ixn","body":"Interaction Execution  The interaction (\"ixn\") schema defines the serialized form of an action invocation or a property edit. In fact, it actually defines a call-graph of such executions for those cases where the WrapperFactory is used to execute sub-actions/property edits.  Each execution id
 entifies the target object, the member to invoke, and the arguments. It also captures metrics about the execution, and the result of the execution (eg return value of an action invocation). ","description":" The interaction (\"ixn\") schema defines the serialized form of an action invocation or a property edit. In fact, it actually defines a call-graph of such executions for those cases where the WrapperFactory is used to execute sub-actions/property edits. ","id":77231561},"78112488":{"title":"Screencast","url":"guides/ugvw/ugvw.html#_screencast","body":"Screencast  This screencast describes the feature. ","description":" This screencast describes the feature. ","id":78112488},"78624086":{"title":"Other Guides","url":"guides/ugsec/ugsec.html#_other_guides","body":"Other Guides  Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides.  The user guides available are:  The reference guides are:  The remaining guides are: ","descrip
 tion":" Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides. ","id":78624086},"80534397":{"title":"ContentMappingService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_ContentMappingService","body":"ContentMappingService  The ContentMappingService supports the (default implementation of the) ContentNegotiationService enabling the RestfulObjects viewer to represent domain objects in some other format as specified by the HTTP Accept header.  See ContentNegotiationService for further discussion. ","description":" The ContentMappingService supports the (default implementation of the) ContentNegotiationService enabling the RestfulObjects viewer to represent domain objects in some other format as specified by the HTTP Accept header. ","id":80534397},"83803344":{"title":"MessageService","url":"guides/rgsvc/rgsvc.html#_rgsvc_application-layer-api_MessageService","body":"MessageService  The MessageService allows domain 
 objects to raise information, warning or error messages. These messages can either be simple strings, or can be translated. ","description":" The MessageService allows domain objects to raise information, warning or error messages. These messages can either be simple strings, or can be translated. ","id":83803344},"83933647":{"title":"Persistence Concerns","url":"guides/ugbtb/ugbtb.html#_persistence_concerns","body":"Persistence Concerns ","description":"","id":83933647},"85931482":{"title":"Task","url":"release-notes/release-notes.html#_task_24","body":"Task ","description":"","id":85931482},"87271564":{"title":"2004:","url":"pages/articles-and-presentations/articles-and-presentations.html#_2004","body":"2004: ","description":"","id":87271564},"90561824":{"title":"Wicket Viewer","url":"release-notes/release-notes.html#_wicket_viewer_8","body":"Wicket Viewer ","description":"","id":90561824},"90935214":{"title":"Wicket Viewer","url":"release-notes/release-notes.html#_wicket_viewer_1
 0","body":"Wicket Viewer ","description":"","id":90935214},"91902412":{"title":"The issue in more detail","url":"guides/ugodn/ugodn.html#_the_issue_in_more_detail","body":"The issue in more detail  Consider these entities (yuml.me/b8681268):  In the course of a transaction, the Agreement entity is loaded into memory (not necessarily modified), and then new AgreementRoles are associated to it.  All these entities implement Comparable using ObjectContracts, and the implementation of AgreementRole's (simplified) is:  while Agreement's is implemented as:  and Party's is similarly implemented as:  DataNucleus’s persistence-by-reachability algorithm adds the AgreementRole instances into a SortedSet, which causes AgreementRole#compareTo() to fire:  In other words, in figuring out whether AgreementRole requires the persistence-by-reachability algorithm to run, it causes the adjacent associated entity Party to also be retrieved. ","description":" Consider these entities (yuml.me/b8681268):
  ","id":91902412},"92467660":{"title":"API and Usage","url":"guides/ugtst/ugtst.html#_ugtst_fixture-scripts_api-and-usage","body":"API and Usage  There are two parts to using fixture scripts: the FixtureScripts domain service class, and the FixtureScript view model class:  Let’s look at FixtureScripts domain service in more detail first. ","description":" There are two parts to using fixture scripts: the FixtureScripts domain service class, and the FixtureScript view model class: ","id":92467660},"95725933":{"title":"Appendix: Isis Add-ons (not ASF)","url":"guides/ugvw/ugvw.html#_ugvw_isis-addons","body":"Appendix: Isis Add-ons (not ASF) ","description":"","id":95725933},"96583162":{"title":"Configure toolchains plugin","url":"guides/cgcom/cgcom.html#_configure_toolchains_plugin","body":"Configure toolchains plugin  Apache Isis releases are built using Java 7, enforced using the maven toolchains plugin. Ensure that Java 7 is installed and the toolchains plugin is configured, as de
 scribed in the contributors' guide. ","description":" Apache Isis releases are built using Java 7, enforced using the maven toolchains plugin. Ensure that Java 7 is installed and the toolchains plugin is configured, as described in the contributors' guide. ","id":96583162},"99090360":{"title":"Running the App","url":"guides/ugfun/ugfun.html#__ugfun_getting-started_simpleapp-archetype_running-the-app","body":"Running the App  The simpleapp archetype generates a single WAR file, configured to run both the Wicket viewer and the Restful Objects viewer. The archetype also configures the DataNucleus/JDO Objectstore to use an in-memory HSQLDB connection.  Once you’ve built the app, you can run the WAR in a variety of ways. ","description":" The simpleapp archetype generates a single WAR file, configured to run both the Wicket viewer and the Restful Objects viewer. The archetype also configures the DataNucleus/JDO Objectstore to use an in-memory HSQLDB connection. ","id":99090360},"100682
 258":{"title":"Update dependencies","url":"guides/cgcom/cgcom.html#_update_dependencies","body":"Update dependencies  With the release complete, now is a good time to bump versions of dependencies (so that there is a full release cycle to identify any possible issues).  You will probably want to create a new JIRA ticket for these updates (or if minor then use the \"catch-all\" JIRA ticket raised earlier for the next release). ","description":" With the release complete, now is a good time to bump versions of dependencies (so that there is a full release cycle to identify any possible issues). ","id":100682258},"102347041":{"title":"Bug","url":"release-notes/release-notes.html#_bug_10","body":"Bug ","description":"","id":102347041},"104167755":{"title":"How to implement a spellchecker?","url":"guides/ugbtb/ugbtb.html#_ugbtb_hints-and-tips_how-to-implement-a-spellchecker","body":"How to implement a spellchecker?  From this thread on the Apache Isis users mailing list:  One way to impl
 ement is to use the event bus:  if if the change is made through an edit, you can use @Property#domainEvent().  You’ll need some way to know which fields should be spell checked. Two ways spring to mind:  And you’ll (obviously) also need some sort of spell checker implementation to call. ","description":" From this thread on the Apache Isis users mailing list: ","id":104167755},"105480253":{"title":"Visitor","url":"guides/ugbtb/ugbtb.html#__code_visitor_code","body":"Visitor  More often than not, you’ll want to visit every element in the metamodel, and so for this you can instead subclass from MetaModelValidatorVisiting.Visitor:  You can then create your custom validator by subclassing MetaModelValidatorComposite and adding the visiting validator:  If you have more than one rule then each can live in its own visitor. ","description":" More often than not, you’ll want to visit every element in the metamodel, and so for this you can instead subclass from MetaModelValidatorVisi
 ting.Visitor: ","id":105480253},"106558909":{"title":"contributedAs()","url":"guides/rgant/rgant.html#_rgant-ActionLayout_contributedAs","body":"contributedAs()  For a domain service action that can be contributed, the contributedAs() attribute determines how it is contributed: as an action or as an association (ie a property or collection).  The distinction between property or collection is automatic: if the action returns a java.util.Collection (or subtype) then the action is contributed as a collection; otherwise it is contributed as a property.  For a domain service action to be contributed, the domain services must have a nature nature of either VIEW or VIEW_CONTRIBUTIONS_ONLY, and the action must have safe action semantics, and takes a single argument, namely the contributee domain object.  For example:  It’s also possible to use the attribute to suppress the action completely:  In such cases, though, it would probably make more sense to annotate the action as either hidden 
 or indeed @Programmatic. ","description":" For a domain service action that can be contributed, the contributedAs() attribute determines how it is contributed: as an action or as an association (ie a property or collection). ","id":106558909},"106606865":{"title":"Using the Wicket Viewer","url":"guides/rgcfg/rgcfg.html#_using_the_wicket_viewer","body":"Using the Wicket Viewer  Most of the you’re likely to run Apache Isis using the Wicket viewer. In this case Apache Isis' \"deployment type\" concept maps to Wicket’s \"configuration\" concept:  Wicket’s mechanism for specifying the \"configuration\" is to use a context parameter in web.xml; Apache Isis automatically infers its own deployment type from this. In other words: ","description":" Most of the you’re likely to run Apache Isis using the Wicket viewer. In this case Apache Isis' \"deployment type\" concept maps to Wicket’s \"configuration\" concept: ","id":106606865},"108721033":{"title":"Incode Catalog","url":"guides/
 ugfun/ugfun.html#_ugfun_available-domain-services_incode-catalog","body":"Incode Catalog  The Incode Catalog website also provides a number of reusable modules, focusing on business logic for generic subdomains.  This section surveys the functionality available.  The modules themselves fall into a number of broader groups:  Each of the modules has a full README and demo application demonstrating their usage. The sections below briefly outline the capabilities of these modules. ","description":" The Incode Catalog website also provides a number of reusable modules, focusing on business logic for generic subdomains. ","id":108721033},"108815435":{"title":"unchanging()","url":"guides/rgant/rgant.html#_rgant-PropertyLayout_unchanging","body":"unchanging()  The unchanging() attribute is used to indicate that the value held by the property never changes over time, even when other properties of the object do change.  Setting this attribute to true is used as a hint to the viewer to not red
 raw the property after an AJAX update of some other property/ies of the object have changed. This is primarily for performance, eg can improve the user experience when rendering PDFs/blobs.  Note that for this to work, the viewer will also ensure that none of the property’s parent component (such as a tab group panel) are re-rendered.  For example: ","description":" The unchanging() attribute is used to indicate that the value held by the property never changes over time, even when other properties of the object do change. ","id":108815435},"109833874":{"title":"Persistable","url":"guides/rgcms/rgcms.html#_rgcms_classes_mixins_Persistable","body":"Persistable  All domain entities automatically implement the DataNucleus Persistable role interface as a result of the enhancer process (the fully qualified class name is org.datanucleus.enhancement.Persistable). So as a developer you do not need to write any code to obtain the mixins that contribute to this interface. ","description":" 
 All domain entities automatically implement the DataNucleus Persistable role interface as a result of the enhancer process (the fully qualified class name is org.datanucleus.enhancement.Persistable). So as a developer you do not need to write any code to obtain the mixins that contribute to this interface. ","id":109833874},"112375674":{"title":"Auditing","url":"migration-notes/migration-notes.html#_auditing","body":"Auditing  The AuditingService SPI service has been deprecated, instead replaced by the AuditerService.  There can be more than one implementation of this new SPI, and a framework-provided implementation (AuditerServiceLogging) will log to a file. The (non-ASF) Isis addons' audit module also implements the new SPI. ","description":" The AuditingService SPI service has been deprecated, instead replaced by the AuditerService. ","id":112375674},"114685873":{"title":"Usage","url":"guides/rgsvc/rgsvc.html#_usage_19","body":"Usage  To indicate that an action invocation should 
 be published, annotate it with the @Action#publishing() annotation.  To indicate that an property edit should be published, annotate it with the @Property#publishing() annotation.  To indicate that a changed object should be published is to annotate it with the @DomainObject#publishing() annotation. ","description":" To indicate that an action invocation should be published, annotate it with the @Action#publishing() annotation. ","id":114685873},"115229271":{"title":"Domain Entities","url":"guides/ugfun/ugfun.html#_ugfun_programming-model_domain-entities","body":"Domain Entities  Entities are persistent domain objects, with their persistence handled by JDO/DataNucleus. As such, they are mapped to a persistent object store, typically an RDBMS, with DataNucleus taking care of both lazy loading and also the persisting of modified (\"dirty\") objects.  Domain entities are generally decorated with both DataNucleus and Apache Isis annotations. Let’s look at some of the most commonly-use
 d annotations.  To start with, entities are flagged as being \"persistence capable\", indicating how JDO/DataNucleus should manage their identity:  All domain entities will have some sort of mandatory key properties. The example below is a very simple case, where the entity is identified by a name property:  It’s also common for domain entities to have queries annotated on them. These are used by repository domain services to query for instances of the entity:  DataNucleus provides several APIs for defining queries, including entirely programmatic and type-safe APIs; but JDOQL is very similar to SQL and so easily learnt.  The corresponding repository method for the above query is: ","description":" Entities are persistent domain objects, with their persistence handled by JDO/DataNucleus. As such, they are mapped to a persistent object store, typically an RDBMS, with DataNucleus taking care of both lazy loading and also the persisting of modified (\"dirty\") objects. ","id":1152292
 71},"117553409":{"title":"Object Icon","url":"guides/ugfun/ugfun.html#_object_icon","body":"Object Icon  The icon is often the same for all instances of a particular class, and is picked up by convention.  It’s is also possible for an individual instance to return a custom icon, typically so that some significant state of that domain object is represented. For example, a custom icon could be used to represent a shipped order, say, or an overdue library loan. ","description":" The icon is often the same for all instances of a particular class, and is picked up by convention. ","id":117553409},"121574190":{"title":"Related Services","url":"guides/rgsvc/rgsvc.html#_related_services_18","body":"Related Services  The ActionInteractionContext service allows bulk actions to co-ordinate with each other.  The QueryResultsCache is useful for caching the results of expensive method calls. ","description":" The ActionInteractionContext service allows bulk actions to co-ordinate with each othe
 r. ","id":121574190},"121879267":{"title":"Wicket Viewer","url":"release-notes/release-notes.html#_wicket_viewer_2","body":"Wicket Viewer ","description":"","id":121879267},"122762699":{"title":"Contributee","url":"guides/rgcms/rgcms.html#_rgcms_classes_contributee","body":"Contributee  The interfaces listed in this chapter act as contributees; they allow domain services to contribute actions/properties/collections to any domain objects that implement these interfaces. ","description":" The interfaces listed in this chapter act as contributees; they allow domain services to contribute actions/properties/collections to any domain objects that implement these interfaces. ","id":122762699},"125299345":{"title":"Example","url":"guides/rgant/rgant.html#_example_2","body":"Example  This example is taken from the (non-ASF) Isis addons' todoapp: ","description":" This example is taken from the (non-ASF) Isis addons' todoapp: ","id":125299345},"125961908":{"title":"Do it!","url":"pages/tg/tg
 .html#_do_it","body":"Do it! ","description":"","id":125961908},"134804772":{"title":"How to handle void/null results","url":"guides/ugbtb/ugbtb.html#_ugbtb_hints-and-tips_how-to-handle-void-and-null-results","body":"How to handle void/null results  From this thread on the Apache Isis users mailing list:  One way to implement this idea is to provide a custom implementation of the RoutingService SPI domain service. The default implementation will either return the current object (if not null), else the home page (as defined by @HomePage) if one exists.  The following custom implementation refines this to use the breadcrumbs (available in the Wicket viewer) to return the first non-deleted domain object found in the list of breadcrumbs:  Note that the above implementation uses Java 8, so if you are using Java 7 then you’ll need to backport accordingly. ","description":" From this thread on the Apache Isis users mailing list: ","id":134804772},"140760147":{"title":"Isis Add-on modules
 ","url":"guides/ugvw/ugvw.html#_isis_add_on_modules","body":"Isis Add-on modules  Some of the (non-ASF) Isis Addons modules also provide services whose actions appear in top-level menus.  The security's module places its domain service menus in three top-level menus:  Meanwhile the devutils module places its actions - to download layouts and so forth - on a \"Prototyping\" top-level menu, on the SECONDARY menu bar.  Currently there is no facility to alter the placement of these services. However, their UI can be suppressed using security or using a vetoing subscriber. ","description":" Some of the (non-ASF) Isis Addons modules also provide services whose actions appear in top-level menus. ","id":140760147},"145340696":{"title":"Registering the Services","url":"guides/rgsvc/rgsvc.html#_registering_the_services_20","body":"Registering the Services  The (non-ASF) Isis addons' audit module provides an implementation of this service (AuditingService), and also provides a number of relate
 d domain services (AuditingServiceMenu, AuditingServiceRepository and AuditingServiceContributions).  Assuming that an AppManifest is being used to bootstrap the app) then this can be activated by updating the pom.xml and updating the AppManifest#getModules() method.  If menu items or contributions are not required in the UI, these can be suppressed either using security or by implementing a vetoing subscriber. ","description":" The (non-ASF) Isis addons' audit module provides an implementation of this service (AuditingService), and also provides a number of related domain services (AuditingServiceMenu, AuditingServiceRepository and AuditingServiceContributions). ","id":145340696},"148135206":{"title":"Layout Metadata Reader (deprecated)","url":"guides/ugbtb/ugbtb.html#_ugbtb_programming-model_layout-metadata-reader","body":"Layout Metadata Reader (deprecated)  The metadata for domain objects is obtained both annotations and files. There is also deprecated support for reading layout
 s from .layout.json files. This service provides an SPI (and default implementation) for reading layouts defined in this fashion. ","description":" The metadata for domain objects is obtained both annotations and files. There is also deprecated support for reading layouts from .layout.json files. This service provides an SPI (and default implementation) for reading layouts defined in this fashion. ","id":148135206},"153666205":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_implementation_17","body":"Implementation  The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.title.TitleServiceDefault). ","description":" The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.title.TitleServiceDefault). ","id":153666205},"155655500":{"title":"@PrimaryKey (javax.jdo)","url":"guides/rgant/rgant.html#_rgant-PrimaryKey","body":"@PrimaryKey (javax.jdo) ","description":"","id":155655500},"15803341
 2":{"title":"SPI","url":"guides/rgsvc/rgsvc.html#_spi_27","body":"SPI  The SPI defined by the service is: ","description":" The SPI defined by the service is: ","id":158033412},"158069558":{"title":"Usability: Defaults","url":"pages/tg/tg.html#_usability_defaults","body":"Usability: Defaults  Quick detour: often we want to set up defaults to go with choices. Sensible defaults for action parameters can really improve the usability of the app. ","description":" Quick detour: often we want to set up defaults to go with choices. Sensible defaults for action parameters can really improve the usability of the app. ","id":158069558},"158897592":{"title":"Refactoring","url":"guides/dg/dg.html#__dg_ide_intellij_hints-and-tips_refactoring","body":"Refactoring  Loads of good stuff on the Refactor menu; most used are:  If you can’t remember all those shortcuts, just use ctrl-shift-alt-T (might want to rebind that to something else!) and get a context-sensitive list of refactorings available f
 or the currently selected object ","description":" Loads of good stuff on the Refactor menu; most used are: ","id":158897592},"159072030":{"title":"(non-ASF) Incode Platform","url":"migration-notes/migration-notes.html#_migration-notes_1.14.0-to-1.15.0_incode-platform","body":"(non-ASF) Incode Platform  (work in progress) The supporting (non-ASF) Isis Addons and Incode Catalog have also been reorganised into a single \"Incode Platform\".  While each module can still be consumed individually, the new platform versions consistently (a change in any one module will result in a re-release of all). This should make these modules easier to consume, and easier to maintain/develop.  All the modules remain open source, still licensed under the ASF v2.0 license.  As of this release, none of the groupIds or artifactIds have changed. They will be rationalized/made consistent in a future release; most probably to coincide with v2.0.0 of the framework. ","description":" (work in progress) The sup
 porting (non-ASF) Isis Addons and Incode Catalog have also been reorganised into a single \"Incode Platform\". ","id":159072030},"160872749":{"title":"Related Services","url":"guides/rgfis/rgfis.html#_related_services","body":"Related Services  The default implementation of ContentNegotiationService delegates to ContentMappingService (if present) to convert domain entities into a stable form (eg DTO).  The ContentNegotiationService is itself called by the (default implementation of) RepresentationService. ","description":" The default implementation of ContentNegotiationService delegates to ContentMappingService (if present) to convert domain entities into a stable form (eg DTO). ","id":160872749},"163456888":{"title":"Dependency upgrade","url":"release-notes/release-notes.html#_dependency_upgrade_9","body":"Dependency upgrade ","description":"","id":163456888},"163915714":{"title":"web.xml","url":"migration-notes/migration-notes.html#_web_xml","body":"web.xml  In the web.xml, the \
 "isis.viewers\" context-param is now ignored. Instead the viewer_wicket.properties and viewer_restfulobjects.properties will both be loaded if present (but neither need be present). ","description":" In the web.xml, the \"isis.viewers\" context-param is now ignored. Instead the viewer_wicket.properties and viewer_restfulobjects.properties will both be loaded if present (but neither need be present). ","id":163915714},"165602306":{"title":"GridLoaderService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_GridLoaderService","body":"GridLoaderService  The GridLoaderService provides the ability to load the XML layout (grid) for a domain class. ","description":" The GridLoaderService provides the ability to load the XML layout (grid) for a domain class. ","id":165602306},"165750333":{"title":"loaded()","url":"guides/rgcms/rgcms.html#_rgcms_methods_lifecycle_loaded","body":"loaded()  The loaded() lifecycle callback method is called when a (persistent) object has just been lo
 aded from the object store. ","description":" The loaded() lifecycle callback method is called when a (persistent) object has just been loaded from the object store. ","id":165750333},"166045728":{"title":"Sanity Check","url":"guides/cgcom/cgcom.html#_sanity_check_2","body":"Sanity Check  Ensure that the framework builds ok using the same command that your CI server is set up to execute (see section above). ","description":" Ensure that the framework builds ok using the same command that your CI server is set up to execute (see section above). ","id":166045728},"166899251":{"title":"Installing and Setting up","url":"guides/dg/dg.html#__dg_ide_intellij_installing","body":"Installing and Setting up  This section covers installation and setup. These notes/screenshots were prepared using IntelliJ Community Edition 14.1.x, but are believed to be compatible with more recent versions/other editions of the IDE. ","description":" This section covers installation and setup. These notes/screen
 shots were prepared using IntelliJ Community Edition 14.1.x, but are believed to be compatible with more recent versions/other editions of the IDE. ","id":166899251},"167039338":{"title":"Task","url":"release-notes/release-notes.html#_task_14","body":"Task ","description":"","id":167039338},"169081251":{"title":"Interaction","url":"guides/rgsvc/rgsvc.html#__code_interaction_code","body":"Interaction  The public API of the Interaction class consists of:  This class is concrete (is also the implementation). ","description":" The public API of the Interaction class consists of: ","id":169081251},"174738887":{"title":"Related functionality","url":"guides/ugvw/ugvw.html#_related_functionality_2","body":"Related functionality  The Recent Pages also lists recently visited pages, selected from a drop-down. ","description":" The Recent Pages also lists recently visited pages, selected from a drop-down. ","id":174738887},"175028546":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_im
 plementation_5","body":"Implementation  The framework provides a default implementation of this service, namely GridServiceDefault. ","description":" The framework provides a default implementation of this service, namely GridServiceDefault. ","id":175028546},"175197970":{"title":"Performance tuning","url":"pages/tg/tg.html#_performance_tuning","body":"Performance tuning  The QueryResultsCache (request-scoped) domain service allows arbitrary objects to be cached for the duration of a request.  This can be helpful for \"naive\" code which would normally make the same query within a loop. ","description":" The QueryResultsCache (request-scoped) domain service allows arbitrary objects to be cached for the duration of a request. ","id":175197970},"175636232":{"title":"RepositoryService","url":"guides/rgsvc/rgsvc.html#_rgsvc_persistence-layer-api_RepositoryService","body":"RepositoryService  The RepositoryService collects together methods for creating, persisting and searching for entiti
 es from the underlying persistence store. It acts as an abstraction over the JDO/DataNucleus objectstore.  You can use it during prototyping to write naive queries (find all rows, then filter using the Guava Predicate API, or you can use it to call JDO named queries using JDOQL.  As an alternative, you could also use JDO typesafe queries through the IsisJdoSupport service. ","description":" The RepositoryService collects together methods for creating, persisting and searching for entities from the underlying persistence store. It acts as an abstraction over the JDO/DataNucleus objectstore. ","id":175636232},"176767338":{"title":"Command and Events","url":"guides/rgsvc/rgsvc.html#__rgsvc_intro_commands-and-events","body":"Command and Events  A good number of the domain services manage the execution of action invocations/property edits, along with the state of domain objects that are modified as a result of these. These services capture information which can then be used for various p
 urposes, most notably for auditing or for publishing events, or for deferring execution such that the execution be performed in the background at some later date.  The diagram below shows how these services fit together. The outline boxes are services while the coloured boxes represent data structures - defined in the applib and therefore accessible to domain applications - which hold various information about the executions.  To explain:  Implementations of CommandService can use the Command#getMemento() method to obtain a XML equivalent of that Command, reified using the cmd.xsd schema. This can be converted back into a CommandDto using the CommandDtoUtils utility class (part of the applib).  Similarly, implementations of PublisherService can use the InteractionDtoUtils utility class to obtain a InteractionDto representing the interaction, either just for a single execution or for the entire call-graph. This can be converted into XML in a similar fashion.  Likewise, the PublishedO
 bjects class passed to the PublisherService at the end of the interaction provides the PublishedObjects#getDto() method which returns a ChangesDto instance. This can be converted into XML using the ChangesDtoUtils utility class.  One final point: multiple PublisherService implementations are supported because different implementations may have different responsibilities. For example, the (non-ASF) Isis addons' publishmq module is responsible for publishing messages onto an ActiveMQ event bus, for inter-system communication. However, the SPI can also be used for profiling; each execution within the call-graph contains metrics of the number of objects loaded or modified as a result of that execution, and thus could be used for application profiling. The framework provides a default PublisherServiceLogging implementation that logs this using SLF4J. ","description":" A good number of the domain services manage the execution of action invocations/property edits, along with the state of d
 omain objects that are modified as a result of these. These services capture information which can then be used for various purposes, most notably for auditing or for publishing events","id":176767338},"178125062":{"title":"domainEvent()","url":"guides/rgant/rgant.html#_rgant-Action_domainEvent","body":"domainEvent()  Whenever a domain object (or list of domain objects) is to be rendered, the framework fires off multiple domain events for every property, collection and action of the domain object. In the cases of the domain object’s actions, the events that are fired are:  Subscribers subscribe through the EventBusService using either Guava or Axon Framework annotations and can influence each of these phases.  By default the event raised is ActionDomainEvent.Default. For example:  The domainEvent() attribute allows a custom subclass to be emitted allowing more precise subscriptions (to those subclasses) to be defined instead. This attribute is also supported for collections and pr
 operties.  For example:  The benefit is that subscribers can be more targeted as to the events that they subscribe to. ","description":" Whenever a domain object (or list of domain objects) is to be rendered, the framework fires off multiple domain events for every property, collection and action of the domain object. In the cases of the domain object’s actions, the events that are fired are: ","id":178125062},"180783343":{"title":"TranslatableException","url":"guides/ugbtb/ugbtb.html#__code_translatableexception_code","body":"TranslatableException  Another mechanism by which messages can be rendered to the user are as the result of exception messages thrown and recognized by an ExceptionRecognizer.  In this case, if the exception implements TranslatableException, then the message will automatically be translated before being rendered. The TranslatableException itself takes the form: ","description":" Another mechanism by which messages can be rendered to the user are as the resul
 t of exception messages thrown and recognized by an ExceptionRecognizer. ","id":180783343},"183226640":{"title":"updatedLifecycleEvent()","url":"guides/rgant/rgant.html#_rgant-DomainObject_updatedLifecycleEvent","body":"updatedLifecycleEvent()  Whenever a (persistent) domain object has been modified and has been updated in the database, an \"updated\" lifecycle event is fired.  Subscribers subscribe through the EventBusService and can use the event to obtain a reference to the domain object.  By default the event raised is ObjectUpdatedEvent.Default. For example:  The purpose of the updatedLifecycleEvent() attribute is to allows a custom subclass to be emitted instead. A similar attribute is available for other lifecycle events.  For example:  The benefit is that subscribers can be more targeted as to the events that they subscribe to. ","description":" Whenever a (persistent) domain object has been modified and has been updated in the database, an \"updated\" lifecycle event is fir
 ed. ","id":183226640},"188123644":{"title":"2013","url":"pages/articles-and-presentations/articles-and-presentations.html#_2013","body":"2013 ","description":"","id":188123644},"189180810":{"title":"HoldsUpdatedAt","url":"guides/rgcms/rgcms.html#_rgcms_classes_roles_HoldsUpdatedAt","body":"HoldsUpdatedAt  The HoldsUpdatedAt role interface allows the (framework-provided) TimestampService to update each object with the current timestamp whenever it is modified in a transaction.  The interface is defined as:  The current time is obtained from the ClockService.  Entities that implement this interface often also implement HoldsUpdatedBy role interface; as a convenience the Timestampable interface combines the two roles. ","description":" The HoldsUpdatedAt role interface allows the (framework-provided) TimestampService to update each object with the current timestamp whenever it is modified in a transaction. ","id":189180810},"191180113":{"title":"persistence.xml","url":"guides/ugodn/ugo
 dn.html#_ugodn_configuring_persistence-xml","body":"persistence.xml  DataNucleus will for itself also and read the META-INF/persistence.xml. In theory it can hold mappings and even connection strings. However, with Apache Isis we tend to use annotations instead and externalize connection strings. so its definition is extremely simply, specifying just the name of the \"persistence unit\".  Here’s the one provided by the SimpleApp archetype:  Normally all one needs to do is to change the persistence-unit name.  See DataNucleus' documentation on persistence.xml to learn more. ","description":" DataNucleus will for itself also and read the META-INF/persistence.xml. In theory it can hold mappings and even connection strings. However, with Apache Isis we tend to use annotations instead and externalize connection strings. so its definition is extremely simply, specifying just the name of the \"persistence unit","id":191180113},"193237835":{"title":"Core","url":"release-notes/release-note
 s.html#_core_8","body":"Core ","description":"","id":193237835},"193497711":{"title":"UI Hints","url":"guides/ugfun/ugfun.html#_ugfun_ui-hints","body":"UI Hints ","description":"","id":193497711},"194608562":{"title":"SPI","url":"guides/rgsvc/rgsvc.html#_spi_19","body":"SPI  The SPI defined by the service is:  where FixtureScriptsSpecification exposes these values:  The class is immutable but it has a builder (obtained using FixturescriptsSpecification.builder(…​)) for a fluent API. ","description":" The SPI defined by the service is: ","id":194608562},"195374240":{"title":"Update the LDAP committee (if a PMC member)","url":"guides/cgcom/cgcom.html#_update_the_ldap_committee_if_a_pmc_member","body":"Update the LDAP committee (if a PMC member)  (Assuming that the new committer is a PMC member), also add them as to the PMC committee. This takes two steps:  The new committer does not officially become a member of the PMC until the ASF records have been updated. ","description":" (A
 ssuming that the new committer is a PMC member), also add them as to the PMC committee. This takes two steps: ","id":195374240},"195848147":{"title":"ICLA, obtain new account","url":"guides/cgcom/cgcom.html#_icla_obtain_new_account","body":"ICLA, obtain new account  If required (that is, if the committer is not already a committer for a different ASF project), then ask them to complete an ICLA. As a result of this, they should also get an @apache.org user name.  More info can be found in the ASF new committers guide. ","description":" If required (that is, if the committer is not already a committer for a different ASF project), then ask them to complete an ICLA. As a result of this, they should also get an @apache.org user name. ","id":195848147},"196560907":{"title":"XJC profile","url":"guides/rgmvn/rgmvn.html#__rgmvn_xsd_xsd-submodule_xjc-profile","body":"XJC profile  The xjc profile reads the XSD generated by the xsd goal, and from it generates Java DTOs. Note that this isn’t 
 round-tripping: the original view model is only for use within the Isis app, whereas the DTO generated from the XSDs is for use in a standalone context, eg in a Java subscriber on an event bus.  The xjc profile is defined as:  The referenced catalog.xml file instructs the xjc plugin how to resolve referenced schema locations. Only a reference for the Apache Isis common schema is likely to be needed: ","description":" The xjc profile reads the XSD generated by the xsd goal, and from it generates Java DTOs. Note that this isn’t round-tripping: the original view model is only for use within the Isis app, whereas the DTO generated from the XSDs is for use in a standalone context","id":196560907},"198329644":{"title":"Strings (Length)","url":"guides/ugfun/ugfun.html#__ugfun_programming-model_properties_datatypes_strings","body":"Strings (Length)  By default JDO/DataNucleus will map string properties to a VARCHAR(255). To limit the length, use the @Column(length=…​) annotation.  For
  example:  This is a good example of a case where Apache Isis infers domain semantics from the JDO annotation. ","description":" By default JDO/DataNucleus will map string properties to a VARCHAR(255). To limit the length, use the @Column(length=…​) annotation. ","id":198329644},"198382465":{"title":"Actions","url":"pages/tg/tg.html#_actions","body":"Actions  Most business functionality is implemented using actions basically a public method accepting domain classes and primitives as its parameter types. The action can return a domain entity, or a collection of entities, or a primitive/String/value, or void. If a domain entity is returned then that object is rendered immediately; if a collection is returned then the Wicket viewer renders a table. Such collections are sometimes called \"standalone\" collections. ","description":" Most business functionality is implemented using actions basically a public method accepting domain classes and primitives as its parameter types. The ac
 tion can return a domain entity, or a collection of entities, or a primitive/String/value, or void. If a domain entity is returned then that object is rendered","id":198382465},"203208629":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_18","body":"New Feature ","description":"","id":203208629},"203740710":{"title":"RoutingService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_RoutingService","body":"RoutingService  The RoutingService provides the ability to return (and therefore render) an alternative object from an action invocation.  There are two primary use cases:  Currently the routing service is used only by the Wicket viewer; it is ignored by the Restful Objects viewer. ","description":" The RoutingService provides the ability to return (and therefore render) an alternative object from an action invocation. ","id":203740710},"204452611":{"title":"Related services","url":"guides/rgsvc/rgsvc.html#_related_services_15","body":"Related 
 services  The ConfigurationServiceMenu exposes the allConfigurationProperties action in the user interface. ","description":" The ConfigurationServiceMenu exposes the allConfigurationProperties action in the user interface. ","id":204452611},"207811701":{"title":"API","url":"guides/rgsvc/rgsvc.html#_api_2","body":"API  The API of TitleService is: ","description":" The API of TitleService is: ","id":207811701},"209853740":{"title":"To run","url":"guides/rgmvn/rgmvn.html#_to_run","body":"To run  The plugin is activated by default, so is run simply using:  This will run any tests, and then also - because the plugin is activated by the isis-validate property and bound to the test phase, will run the plugin’s validate goal.  If for any reason you want to disable the validation, use: ","description":" The plugin is activated by default, so is run simply using: ","id":209853740},"213642269":{"title":"Moving on","url":"guides/ugfun/ugfun.html#__ugfun_getting-started_helloworld-archetype_m
 oving-on","body":"Moving on  When you are ready to start working on your own app, we don’t recommend building on top of the helloworld app.  Instead, we suggest that you start with the simpleapp archetype instead. Although a little more complex, it provides more structure and tests, all of which will help you as your application grows. ","description":" When you are ready to start working on your own app, we don’t recommend building on top of the helloworld app. ","id":213642269},"216231183":{"title":"Raising a pull request","url":"guides/dg/dg.html#_raising_a_pull_request","body":"Raising a pull request  If you have your own fork, you can now simply push the changes you’ve made locally to your fork:  This will create a corresponding branch in the remote github repo. If you use gitk --all, you’ll also see a remotes/origin/ISIS-123-blobs branch.  Then, use github to raise a pull request. Pull requests sent to the Apache GitHub repositories will forward a pull request e-mail t
 o the dev mailing list. You’ll probably want to sign up to the dev mailing list first before issuing your first pull request (though that isn’t mandatory).  The process to raise the pull request, broadly speaking: ","description":" If you have your own fork, you can now simply push the changes you’ve made locally to your fork: ","id":216231183},"220685197":{"title":"AbstractSubscriber","url":"guides/rgcms/rgcms.html#_rgcms_classes_super_AbstractSubscriber","body":"AbstractSubscriber  This is a convenience superclass for creating subscriber domain services on the EventBusService. It uses @PostConstruct and @PreDestroy callbacks to automatically register/unregister itself with the EventBusService.  It’s important that subscribers register before any domain services that might emit events on the EventBusService. For example, the (non-ASF) Isis addons' security module provides a domain service that automatically seeds certain domain entities; these will generate lifecycle events
  and so any subscribers must be registered before such seed services. The easiest way to do this is to use the @DomainServiceLayout#menuOrder() attribute.  As a convenience, the AbstractSubscriber specifies this attribute. ","description":" This is a convenience superclass for creating subscriber domain services on the EventBusService. It uses @PostConstruct and @PreDestroy callbacks to automatically register/unregister itself with the EventBusService. ","id":220685197},"221961571":{"title":"Release prepare \"dry run\"","url":"guides/cgcom/cgcom.html#__cgcom_cutting-a-release_releasing-core_release-prepare-dry-run","body":"Release prepare \"dry run\"  Most of the work is done using the mvn release:prepare goal. Since this makes a lot of changes, we run it first in \"dry run\" mode; only if that works do we run the goal for real.  Run the dry-run as follows:  You may be prompted for the gpg passphrase. ","description":" Most of the work is done using the mvn release:prepare goal. Sin
 ce this makes a lot of changes, we run it first in \"dry run\" mode; only if that works do we run the goal for real. ","id":221961571},"224301547":{"title":"IsisWebAppBootstrapper","url":"guides/ugbtb/ugbtb.html#__code_isiswebappbootstrapper_code","body":"IsisWebAppBootstrapper  The IsisWebAppBootstrapper servlet context listener bootstraps the shared (global) metadata for the Apache Isis framework. This listener is not required (indeed must not be configured) if the Wicket viewer is in use.  Its definition is:  Its context parameters are: ","description":" The IsisWebAppBootstrapper servlet context listener bootstraps the shared (global) metadata for the Apache Isis framework. This listener is not required (indeed must not be configured) if the Wicket viewer is in use. ","id":224301547},"227377078":{"title":"Initialization","url":"guides/ugfun/ugfun.html#_ugfun_programming-model_domain-services_initialization","body":"Initialization  Services can optionally declare lifecycle callba
 cks to initialize them (when the app is deployed) and to shut them down (when the app is undeployed).  An Apache Isis session is available when initialization occurs (so services can interact with the object store, for example).  The framework will call any public method annotated with @PostConstruct with either no arguments of an argument of type Map<String,String>. In the latter case, the framework passes in the configuration (isis.properties and any other component-specific configuration files).  Shutdown is similar; the framework will call any method annotated with @PreDestroy. ","description":" Services can optionally declare lifecycle callbacks to initialize them (when the app is deployed) and to shut them down (when the app is undeployed). ","id":227377078},"228550183":{"title":"Policies","url":"guides/cgcom/cgcom.html#_cgcom_policies","body":"Policies ","description":"","id":228550183},"229025509":{"title":"Remove references to isis-viewer-wicket parent pom.","url":"migratio
 n-notes/migration-notes.html#_remove_references_to_code_isis_viewer_wicket_code_parent_pom","body":"Remove references to isis-viewer-wicket parent pom.  In earlier releases the Wicket viewer defined its own parent pom.xml for dependency management and its dependencies and to declare the various submodules that make up the viewer. This pom.xml has now been incorporated into the parent pom.xml for the Core framework.  Therefore, in the parent pom.xml of your own domain applications, remove: ","description":" In earlier releases the Wicket viewer defined its own parent pom.xml for dependency management and its dependencies and to declare the various submodules that make up the viewer. This pom.xml has now been incorporated into the parent pom.xml for the Core framework. ","id":229025509},"230599582":{"title":"AuditingServiceInternal","url":"guides/rgfis/rgfis.html#_rgfis_persistence-layer_AuditingServiceInternal","body":"AuditingServiceInternal  The (internal) AuditingServiceInternal d
 omain service acts as an internal facade to any configured AuditingService and AuditerService services. It is responsible for obtaining the details of all changes to domain objects within an interaction, and then to call the configured AuditingService to actually create audit entries of those changes. ","description":" The (internal) AuditingServiceInternal domain service acts as an internal facade to any configured AuditingService and AuditerService services. It is responsible for obtaining the details of all changes to domain objects within an interaction, and then to call the configured AuditingService to actually create audit entries of those changes. ","id":230599582},"232471644":{"title":"Registering Subscribers","url":"guides/rgsvc/rgsvc.html#_registering_subscribers","body":"Registering Subscribers  The register() method should be called in the @PostConstruct lifecycle method. It is valid and probably the least confusing to readers to also \"unregister\" in the @PreDestroy l
 ifecycle method (though as noted above, unregistering is actually a no-op).  For example:  This works for both singleton (application-scoped) and also @RequestScoped domain services. ","description":" The register() method should be called in the @PostConstruct lifecycle method. It is valid and probably the least confusing to readers to also \"unregister\" in the @PreDestroy lifecycle method (though as noted above, unregistering is actually a no-op). ","id":232471644},"235512052":{"title":"Usage","url":"guides/rgsvc/rgsvc.html#_usage_21","body":"Usage  The usage will vary depending upon the conventions of the design. As of 1.9.0, the usage of the service has been centralized such that the packages to be scanned are located from the AppManifest's #getModules() method.  For example, the SimpleApp archetype's app manifest includes:  where the three module classes in effect define three different package prefixes to search under (for domain services, fixture scripts and persistent entit
 ies).  Other usages of the ClassDiscoveryService are likely to work in a similar way, requiring some sort of scope to be specified. ","description":" The usage will vary depending upon the conventions of the design. As of 1.9.0, the usage of the service has been centralized such that the packages to be scanned are located from the AppManifest's #getModules() method. ","id":235512052},"238546442":{"title":"rebuildMetamodel()","url":"guides/rgcms/rgcms.html#__rgcms_classes_mixins_Object_rebuildMetamodel","body":"rebuildMetamodel()  The Object_rebuildMetamodel mixin provides the ability to discard the current internal metamodel data (an instance of ObjectSpecification) for the domain class of the rendered object, and recreate from code and other sources (most notably, layout XML data). It has the following signature: ","description":" The Object_rebuildMetamodel mixin provides the ability to discard the current internal metamodel data (an instance of ObjectSpecification) for the domain
  class of the rendered object, and recreate from code and other sources (most notably, layout XML data). It has the following signature: ","id":238546442},"238979657":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_22","body":"New Feature ","description":"","id":238979657},"240026998":{"title":"Improvement","url":"release-notes/release-notes.html#_improvement_14","body":"Improvement ","description":"","id":240026998},"242030985":{"title":"1.4.0","url":"release-notes/release-notes.html#_release-notes_1.4.0","body":"1.4.0 ","description":"","id":242030985},"243439147":{"title":"hidden()","url":"guides/rgant/rgant.html#_rgant-Property_hidden","body":"hidden()  Properties can be hidden at the domain-level, indicating that they are not visible to the end-user. This attribute can also be applied to actions and collections.  For example:  The acceptable values for the where parameter are:  For example, if a property is annotated with @Title, then normally this s
 hould be hidden from all tables. Annotating with @Property(where=Where.NOWHERE) overrides this. ","description":" Properties can be hidden at the domain-level, indicating that they are not visible to the end-user. This attribute can also be applied to actions and collections. ","id":243439147},"243876171":{"title":"Task","url":"release-notes/release-notes.html#_task_28","body":"Task ","description":"","id":243876171},"244520152":{"title":"SessionLoggingService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_SessionLoggingService","body":"SessionLoggingService  The SessionLoggingService defines an SPI to keep track of (typically: to log) the current sessions that are using the application. ","description":" The SessionLoggingService defines an SPI to keep track of (typically: to log) the current sessions that are using the application. ","id":244520152},"246275568":{"title":"Registering the Services","url":"guides/rgsvc/rgsvc.html#_registering_the_services_4","body":"Re
 gistering the Services  Assuming that the configuration-and-annotation services installer is configured (implicit if using the AppManifest to bootstrap the app), then the default implementation of GridLoaderService is automatically registered and injected, and no further configuration is required.  To use an alternative implementation, use @DomainServiceLayout#menuOrder() (as explained in the introduction to this guide). That said, there should be little reason to use a different implementation; if behaviour does need to be changed, it would also be possible to replace the implementation of either the GridLoaderService or the GridSystemService. ","description":" Assuming that the configuration-and-annotation services installer is configured (implicit if using the AppManifest to bootstrap the app), then the default implementation of GridLoaderService is automatically registered and injected, and no further configuration is required. ","id":246275568},"246409050":{"title":"Using syste
 m properties","url":"guides/ugbtb/ugbtb.html#_using_system_properties","body":"Using system properties  The servlet context initializer will search for any system properties called isis.xxx and if present will use them as overrides.  Thus, an alternative option for a Docker image is to bootstrap the servlet container (Tomcat, Jetty) with appropriate system properties set up. For example, with Tomcat this can be done by writing into the conf/catalina.properties file (see for example this stackoverflow post).  The Docker’s ENTRYPOINT therefore just needs to parse the Docker container’s own command line arguments and use to create this file. ","description":" The servlet context initializer will search for any system properties called isis.xxx and if present will use them as overrides. ","id":246409050},"251015067":{"title":"myapp-dom Module","url":"migration-notes/migration-notes.html#__code_myapp_dom_code_module","body":"myapp-dom Module  In your myapp-dom module (containing defi
 nitions of your persistent entities and domain services), create an empty class to represent the module. This should be at the root package for the domain, eg:  Since there is no requirement to actually instantiate this class (it merely provides the location of the myapp.dom package), we give it a private constructor.  If you have any other modules where you have either domain services or entities, similarly create an empty \"module\" class. ","description":" In your myapp-dom module (containing definitions of your persistent entities and domain services), create an empty class to represent the module. This should be at the root package for the domain, eg: ","id":251015067},"255768608":{"title":"Multi-tenancy support","url":"pages/isis-in-pictures/isis-in-pictures.html#_multi_tenancy_support","body":"Multi-tenancy support  Of the various Isis Addons, the security module has the most features. One significant feature is the ability to associate users and objects with a \"tenancy\". T
 he todoapp uses this feature so that different users' list of todo items are kept separate from one another. A user with administrator is able to switch their own \"tenancy\" to the tenancy of some other user, in order to access the objects in that tenancy:  For more details, see the security module README. ","description":" Of the various Isis Addons, the security module has the most features. One significant feature is the ability to associate users and objects with a \"tenancy\". The todoapp uses this feature so that different users' list of todo items are kept separate from one another. A user with administrator is","id":255768608},"257661017":{"title":"AppManifest (bootstrapping)","url":"guides/rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping","body":"AppManifest (bootstrapping)  This section describes how to implement the AppManifest interface to bootstrap both an Apache Isis web application, and also its integration tests. ","description":" This section describes how
  to implement the AppManifest interface to bootstrap both an Apache Isis web application, and also its integration tests. ","id":257661017},"259358868":{"title":"Hints and Tips","url":"guides/ugodn/ugodn.html#_ugodn_hints-and-tips","body":"Hints and Tips ","description":"","id":259358868},"266250802":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_implementation_2","body":"Implementation  The (non-ASF) Isis addons' kitchensink app provides an example implementation:  which is rendered as: ","description":" The (non-ASF) Isis addons' kitchensink app provides an example implementation: ","id":266250802},"267695496":{"title":"Building Apache Isis","url":"guides/dg/dg.html#_dg_building-isis","body":"Building Apache Isis ","description":"","id":267695496},"273843820":{"title":"Simulated UI (WrapperFactory)","url":"guides/ugtst/ugtst.html#_simulated_ui_code_wrapperfactory_code","body":"Simulated UI (WrapperFactory)  When we talk about integration tests/specs here, we mean tests 
 that exercise the domain object logic, through to the actual database. But we also want the tests to exercise the app from the users’s perspective, which means including the user interface.  For most other frameworks that would require having to test the application in a very heavy weight/fragile fashion using a tool such as Selenium, driving a web browser to navigate . In this regard though, Apache Isis has a significant trick up its sleeve. Because Apache Isis implements the naked objects pattern, it means that the UI is generated automatically from the UI. This therefore allows for other implementations of the UI.  The WrapperFactory domain service allows a test to wrap domain objects and thus to interact with said objects \"as if\" through the UI:  If the test invokes an action that is disabled, then the wrapper will throw an appropriate exception. If the action is ok to invoke, it delegates through.  What this means is that an Isis application can be tested end-to-end without
  having to deploy it onto a webserver; the whole app can be tested while running in-memory. Although integration tests re (necessarily) slower than unit tests, they are not any harder to write (in fact, in some respects they are easier). ","description":" When we talk about integration tests/specs here, we mean tests that exercise the domain object logic, through to the actual database. But we also want the tests to exercise the app from the users’s perspective, which means including the user interface. ","id":273843820},"273985863":{"title":"addTo…​() (deprecated)","url":"guides/rgcms/rgcms.html#_rgcms_methods_prefixes_addTo","body":"addTo…​() (deprecated)  The addTo…​() supporting method is called whenever an object is added to a collection. Its purpose is to allow additional business logic to be performed.  For example:  See also removeFrom…​()` ","description":" The addTo…​() supporting method is called whenever an object is added to a collection. Its purpo
 se is to allow additional business logic to be performed. ","id":273985863},"278859977":{"title":"promptStyle()","url":"guides/rgant/rgant.html#_rgant-PropertyLayout_promptStyle","body":"promptStyle()  The promptStyle() attribute is used to specify whether, when editing a domain object property, the new value for the property is prompted by way of a dialog box, or is prompted using an inline panel (replacing the property on the page).  If the attribute is not set, then the value of the configuration property isis.viewer.wicket.promptStyle is used. If this is itself not set, then an inline prompt is used.  For example:  Alternatively, the promptStyle() can be specified using file-based layouts. ","description":" The promptStyle() attribute is used to specify whether, when editing a domain object property, the new value for the property is prompted by way of a dialog box, or is prompted using an inline panel (replacing the property on the page). ","id":278859977},"278890330":{"title":
 "Build a domain app","url":"pages/tg/tg.html#_build_a_domain_app","body":"Build a domain app  The remainder of the tutorial provides guidance on building a domain application. We don’t mandate any particular design, but we suggest one with no more than 3 to 6 domain entities in the first instance. If you’re stuck for ideas, then how about:  Hopefully one of those ideas appeals or sparks an idea for something of your own. ","description":" The remainder of the tutorial provides guidance on building a domain application. We don’t mandate any particular design, but we suggest one with no more than 3 to 6 domain entities in the first instance. If you’re stuck for ideas, then how about: ","id":278890330},"278999912":{"title":"Integration API","url":"guides/rgsvc/rgsvc.html#_rgsvc_integration-api","body":"Integration API ","description":"","id":278999912},"282766365":{"title":"Object CSS Styling","url":"guides/ugfun/ugfun.html#_object_css_styling","body":"Object CSS Styling  It is
  also possible for an object to return a CSS class. In conjunction with customized CSS this can be used to apply arbitrary styling; for example each object could be rendered in a page with a different background colour. ","description":" It is also possible for an object to return a CSS class. In conjunction with customized CSS this can be used to apply arbitrary styling; for example each object could be rendered in a page with a different background colour. ","id":282766365},"283629224":{"title":"App Structure","url":"guides/ugfun/ugfun.html#_app_structure","body":"App Structure  As noted above, the generated app is a very simple application consisting of a single domain object that can be easily renamed and extended. The intention is not to showcase all of Apache Isis' capabilities; rather it is to allow you to very easily modify the generated application (eg rename SimpleObject to Customer) without having to waste time deleting lots of generated code.  If you run into issues, ple
 ase don’t hesitate to ask for help on the users mailing list. ","description":" As noted above, the generated app is a very simple application consisting of a single domain object that can be easily renamed and extended. The intention is not to showcase all of Apache Isis' capabilities; rather it is to allow you to very easily modify the generated application (eg rename","id":283629224},"285898371":{"title":"ObjectUpdatedEvent","url":"guides/rgcms/rgcms.html#_rgcms_classes_lifecycleevent_ObjectUpdatedEvent","body":"ObjectUpdatedEvent  Subclass of AbstractLifecycleEvent, broadcast when an object has just been updated in the database. This is done either explicitly when the current transaction is flushed using the DomainObjectContainer's #flush(…​) method, else is done implicitly when the transaction commits at the end of the user request.  ObjectUpdatedEvent.Default is the concrete implementation that is used. ","description":" Subclass of AbstractLifecycleEvent, broadcast when
  an object has just been updated in the database. This is done either explicitly when the current transaction is flushed using the DomainObjectContainer's #flush(…​) method, else is done implicitly when the transaction commits at the end of the user request. ","id":285898371},"286850218":{"title":"Dependent choices for action parameters","url":"guides/ugfun/ugfun.html#_dependent_choices_for_action_parameters","body":"Dependent choices for action parameters  For action it is also possible (in a limited form) to define dependencies between parameters. Specifically, if one parameter is a drop-down choice, then other drop-down choices can be derived from it.  A good example is a category/sub-category:  Note how the choices method for the 2nd parameter also accepts the first parameter. ","description":" For action it is also possible (in a limited form) to define dependencies between parameters. Specifically, if one parameter is a drop-down choice, then other drop-down choices can be
  derived from it. ","id":286850218},"287120012":{"title":"Actions","url":"guides/ugfun/ugfun.html#_actions_2","body":"Actions  Of course, the precondition business rules described above are only one type of business rule.  More generally, business rules are implemented in the form of the implementation of actions. Rather than have the end-user have to edit individual properties of numerous objects, an action can encode these rules and allow only safe transformations of the application from one consistent state to the next. ","description":" Of course, the precondition business rules described above are only one type of business rule. ","id":287120012},"288377989":{"title":"Philosophy and Architecture","url":"guides/ugfun/ugfun.html#_ugfun_core-concepts_philosophy","body":"Philosophy and Architecture  This section describes some of the core ideas and architectural patterns upon which Apache Isis builds. ","description":" This section describes some of the core ideas and architectural
  patterns upon which Apache Isis builds. ","id":288377989},"288392697":{"title":"User Experience","url":"guides/ugvw/ugvw.html#_user_experience_3","body":"User Experience  The copy URL dialog is typically obtained by clicking on the icon.  Alternatively, alt+] will also open the dialog. It can be closed with either OK or the Esc key. ","description":" The copy URL dialog is typically obtained by clicking on the icon. ","id":288392697},"291813215":{"title":"Raising events programmatically","url":"guides/rgant/rgant.html#_raising_events_programmatically","body":"Raising events programmatically  Normally events are only raised for interactions through the UI. However, events can be raised programmatically either by calling the EventBusService API directly, or by emulating the UI by wrapping the target object using the WrapperFactory domain service. ","description":" Normally events are only raised for interactions through the UI. However, events can be raised programmatically either by
  calling the EventBusService API directly, or by emulating the UI by wrapping the target object using the WrapperFactory domain service. ","id":291813215},"293860175":{"title":"Usage","url":"guides/rgsvc/rgsvc.html#_usage_10","body":"Usage  The most common use-case is for bulk actions that act upon multiple objects in a list. The (same) Scratchpad service is injected into each of these objects, and so they can use pass information.  For example, the Isis addons example todoapp (not ASF) demonstrates how the Scratchpad service can be used to calculate the total cost of the selecte

<TRUNCATED>

[2/9] isis-site git commit: ISIS-1712: fixes bad link in release docs

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/3b078e07/content/elasticlunr/index.json
----------------------------------------------------------------------
diff --git a/content/elasticlunr/index.json b/content/elasticlunr/index.json
index 4b1b0cb..02e6502 100644
--- a/content/elasticlunr/index.json
+++ b/content/elasticlunr/index.json
@@ -1 +1 @@
-{"version":"0.9.5","fields":["title","body","description","url"],"ref":"id","documentStore":{"docs":{"372886":{"title":"Rows, full-width cols, and tabs","url":"guides/ugvw/ugvw.html#_rows_full_width_cols_and_tabs","body":"Rows, full-width cols, and tabs  The example layout consists of three rows: a row for the object/icon, a row containing a properties, and a row containing collections. In all three cases the row contains a single column spanning the full width of the page. For the property and collection rows, the column contains a tab group.  This corresponds to the following XML:  You will notice that one of the columns has an unreferencedActions attribute, while one of the tabGroups has a similar unreferencedCollections attribute. This topic is discussed in more detail below. ","description":" The example layout consists of three rows: a row for the object/icon, a row containing a properties, and a row containing collections. In all three cases the row contains a single column s
 panning the full width of the page. For the property and collection rows, the column contains a","id":372886},"2646929":{"title":"Apache Isis vs …​","url":"guides/ugfun/ugfun.html#_ugfun_core-concepts_apache-isis-vs","body":"Apache Isis vs …​  Many other frameworks promise rapid application development and provide automatically generated user interfaces, so how do they compare to Apache Isis? ","description":" Many other frameworks promise rapid application development and provide automatically generated user interfaces, so how do they compare to Apache Isis? ","id":2646929},"3836440":{"title":"Running","url":"guides/dg/dg.html#__dg_ide_intellij_running","body":"Running  Let’s see how to run both the app and the tests. ","description":" Let’s see how to run both the app and the tests. ","id":3836440},"11600575":{"title":"Using Contributions","url":"pages/tg/tg.html#_using_contributions","body":"Using Contributions  One of Apache Isis' most powerful features is the abilit
 y for the UI to combine functionality from domain services into the representation of an entity. The effect is similar to traits or mix-ins in other languages, however the \"mixing in\" is done at runtime, within the Apache Isis metamodel. In Apache Isis' terminology, we say that the domain service action is contributed to the entity.  Any action of a domain service that has a domain entity type as one of its parameter types will (by default) be contributed. If the service action takes more than one argument, or does not have safe semantics, then it will be contributed as an entity action. If the service action has precisely one parameter type (that of the entity) and has safe semantics then it will be contributed either as a collection or as a property (dependent on whether it returns a collection of a scalar).  Why are contributions so useful? Because the service action will match not on the entity type, but also on any of the entity’s supertypes (all the way up to java.lang.Obj
 ect). That means that you can apply the dependency inversion principle to ensure that the modules of your application have acyclic dependencies; but in the UI it can still appear as if there are bidirectional dependencies between those modules. The lack of bidirectional dependencies can help save your app degrading into a big ball of mud.  Finally, note that the layout of contributed actions/collections/properties can be specified using the .layout.json file (and it is highly recommended that you do so). ","description":" One of Apache Isis' most powerful features is the ability for the UI to combine functionality from domain services into the representation of an entity. The effect is similar to traits or mix-ins in other languages, however the \"mixing in\" is done at runtime, within the Apache Isis metamodel","id":11600575},"12649581":{"title":"Mark the version as released","url":"guides/cgcom/cgcom.html#_mark_the_version_as_released","body":"Mark the version as released  In JIRA
 , go to the administration section for the Apache Isis project and update the version as being released.  In the Kanban view this will have the effect of marking all tickets as released (clearing the \"done\" column). ","description":" In JIRA, go to the administration section for the Apache Isis project and update the version as being released. ","id":12649581},"13573617":{"title":"hide…​()","url":"guides/rgcms/rgcms.html#_rgcms_methods_prefixes_hide","body":"hide…​()  The hide…​() supporting method is called for properties, collections and actions. It allows the property/collection to be completely hidden from view.  It’s comparatively rare for properties or collections to be imperatively hidden from view, but actions are sometimes hidden or shown visible (as opposed to being just disabled, ie greyed out).  The signature of the supporting method is simply:  Returning true will hide the property, collection or action, returning false leaves it visible.  For example, t
 o hide an action:  Or, to hide a property: ","description":" The hide…​() supporting method is called for properties, collections and actions. It allows the property/collection to be completely hidden from view. ","id":13573617},"14971197":{"title":"Suppressing 'remember me'","url":"guides/ugvw/ugvw.html#_ugvw_configuration-properties_suppressing-remember-me","body":"Suppressing 'remember me'  The 'remember me' checkbox on the login page can be suppressed, if required, by setting a configuration flag. ","description":" The 'remember me' checkbox on the login page can be suppressed, if required, by setting a configuration flag. ","id":14971197},"16629694":{"title":"allowLateRegistration","url":"migration-notes/migration-notes.html#__code_allowlateregistration_code","body":"allowLateRegistration  One possible issue is that (as per ISIS-830) the EventBusService is now initialized as one of the first domain services; this is to ensure that any object lifecycle events caused by domai
 n services initializing themselves can be posted on the event bus for subscribers. The typical case for such lifecycle events to occur is from domain services that seed reference data; one such example can be found in the (non-ASF) Isis addons' security module.  In previous releases, the ordering of initialization for the EventBusService was undefined (but would typically be towards the \"end\" of the list of services. What this meant in practice is that it generally didn’t matter whether (domain service) subscribers were initialized before or after seed services.  Now, though, because the EventBusService is initialized early on, it proactively checks that all subscribers have been registered before any event posts occur (so that no events get missed). If any subscriber attempts to register after at least one event has been posted, then the service will fail fast and the framework will not start. The error looks something like:  To ensure that subscriber domain services are initia
 lized before \"seed\" domain services, the @DomainServiceLayout#menuOrder() attribute can be used. Normally this attribute is just used to order UI-visible services on the menu bars, but it also is used internally to sequence the internal list of services being initialized.  Alternatively, you can disable this checking within the EventBusService using:  If you do that, be aware that not all subscribers may not receive some events generated by other domain services.  For more details, see the EventBusService man page. ","description":" One possible issue is that (as per ISIS-830) the EventBusService is now initialized as one of the first domain services; this is to ensure that any object lifecycle events caused by domain services initializing themselves can be posted on the event bus for subscribers. The typical case for such","id":16629694},"17000573":{"title":"ObjectCreatedEvent","url":"guides/rgcms/rgcms.html#_rgcms_classes_lifecycleevent_ObjectCreatedEvent","body":"ObjectCreatedE
 vent  Subclass of AbstractLifecycleEvent, broadcast when an object is first instantiated using the DomainObjectContainer's #newTransientInstance(…​) method.  ObjectCreatedEvent.Default is the concrete implementation that is used. ","description":" Subclass of AbstractLifecycleEvent, broadcast when an object is first instantiated using the DomainObjectContainer's #newTransientInstance(…​) method. ","id":17000573},"17618894":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_20","body":"New Feature ","description":"","id":17618894},"17724516":{"title":"Multi-select action parameters","url":"guides/ugfun/ugfun.html#_multi_select_action_parameters","body":"Multi-select action parameters  As well as scalar values, action parameters can also be collections. For this to be valid, a choices or autoComplete supporting method must be provided.  For example, suppose we want to \"tag\" or \"label\" an object: ","description":" As well as scalar values, action pa
 rameters can also be collections. For this to be valid, a choices or autoComplete supporting method must be provided. ","id":17724516},"18445041":{"title":"Verifying Releases","url":"downloads.html#_verifying_releases","body":"Verifying Releases ","description":"","id":18445041},"19254915":{"title":"API & Implementation","url":"guides/rgsvc/rgsvc.html#_api_implementation_7","body":"API & Implementation  The API of Scratchpad service is:  This class (o.a.i.applib.services.scratchpad.Scratchpad) is also the implementation. And, as you can see, the service is just a request-scoped wrapper around a java.util.Map. ","description":" The API of Scratchpad service is: ","id":19254915},"21190750":{"title":"Run the archetype","url":"pages/tg/tg.html#_run_the_archetype","body":"Run the archetype  Throughout this tutorial you can, if you wish, just checkout from the github repo wherever you see a \"git checkout\" note:  Run the simpleapp archetype to build an empty Isis application. With the *n
 ix bash shell, use:  Adjust as necessary if using Windows cmd.exe or Powershell.  This will generate the app in a petclinic directory. Move the contents back: ","description":" Throughout this tutorial you can, if you wish, just checkout from the github repo wherever you see a \"git checkout\" note: ","id":21190750},"21212015":{"title":"Key features","url":"pages/powered-by/powered-by.html#_key_features","body":"Key features ","description":"","id":21212015},"21857601":{"title":"Other Guides","url":"guides/cgcom/cgcom.html#_other_guides","body":"Other Guides  Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides.  The user guides available are:  The reference guides are:  The remaining guides are:  This guide provides guidance for Apache Isis' own committers. ","description":" Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides. ","id":21857601},"23125949":{"title":"Edit
 ing","url":"guides/dg/dg.html#__dg_ide_intellij_hints-and-tips_editing","body":"Editing ","description":"","id":23125949},"23524101":{"title":"Collections","url":"guides/ugvw/ugvw.html#_collections","body":"Collections  In the final row the collections are placed in tabs, simply one collection per tab. This corresponds to the following XML:  As with properties, actions can be associated with collections; this indicates that they should be rendered in the collection’s header. ","description":" In the final row the collections are placed in tabs, simply one collection per tab. This corresponds to the following XML: ","id":23524101},"26509816":{"title":"Commit changes","url":"guides/cgcom/cgcom.html#__cgcom_cutting-a-release_releasing-core_commit-changes","body":"Commit changes  Commit any changes from the preceding steps: ","description":" Commit any changes from the preceding steps: ","id":26509816},"27806498":{"title":"renderedAsDayBefore()","url":"guides/rgant/rgant.html#_rgant-P
 arameterLayout_renderedAsDayBefore","body":"renderedAsDayBefore()  The renderedAsDayBefore() attribute applies only to date parameters whereby the date will be rendered as the day before the value actually held in the domain object. It is ignored for parameters of other types. This attribute is also supported for properties.  This behaviour might at first glance appear odd, but the rationale is to support the use case of a sequence of instances that represent adjacent intervals of time. In such cases there would typically be startDate and endDate properties, eg for all of Q2. Storing this as a half-closed interval — eg [1-Apr-2015, 1-July-2015) — can substantially simplify internal algorithms; the endDate of one interval will correspond to the startDate of the next.  However, from an end-user perspective the requirement may be to render the interval as a fully closed interval; eg the end date should be shown as 30-Jun-2015.  This attribute therefore bridges the gap; it presents 
 the information in a way that makes sense to an end-user, but also stores the domain object in a way that is easy work with internally.  For example: ","description":" The renderedAsDayBefore() attribute applies only to date parameters whereby the date will be rendered as the day before the value actually held in the domain object. It is ignored for parameters of other types. This attribute is also supported for properties. ","id":27806498},"31857620":{"title":"Interacting with the services","url":"guides/rgsvc/rgsvc.html#_interacting_with_the_services","body":"Interacting with the services  Typically domain objects will have little need to interact with the CommandContext and Command directly; what is more useful is that these are persisted in support of the various use cases identified above.  One case however where a domain object might want to obtain the Command is to determine whether it has been invoked in the foreground, or in the background. It can do this using the getExecu
 tedIn() method:  Although not often needed, this then allows the domain object to access the Command object through the CommandContext service. To expand th above example:  If run in the background, it might then notify the user (eg by email) if all work is done.  This leads us onto a related point, distinguishing the current effective user vs the originating \"real\" user. When running in the foreground, the current user can be obtained from the UserService, using:  If running in the background, however, then the current user will be the credentials of the background process, for example as run by a Quartz scheduler job.  The domain object can still obtain the original (\"effective\") user that caused the job to be created, using: ","description":" Typically domain objects will have little need to interact with the CommandContext and Command directly; what is more useful is that these are persisted in support of the various use cases identified above. ","id":31857620},"36734123":{"
 title":"Bug","url":"release-notes/release-notes.html#_bug_8","body":"Bug ","description":"","id":36734123},"39248326":{"title":"Runtime vs Noop implementation","url":"guides/rgfis/rgfis.html#_runtime_vs_noop_implementation","body":"Runtime vs Noop implementation  The framework provides two implementations:  The …​Default implementation takes priority over the …​Noop implementation. ","description":" The framework provides two implementations: ","id":39248326},"39290887":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_implementation_22","body":"Implementation  The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.container.DomainObjectContainerDefault). ","description":" The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.container.DomainObjectContainerDefault). ","id":39290887},"42240053":{"title":"Screenshots","url":"guides/ugvw/ugvw.html#_screenshots_9","body":"Screensho
 ts  The screenshot below shows the Isis addons example todoapp (not ASF) with a 'brand logo' image in its header:  A custom brand logo (typically larger) can also be specified for the signin page: ","description":" The screenshot below shows the Isis addons example todoapp (not ASF) with a 'brand logo' image in its header: ","id":42240053},"44483327":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_17","body":"New Feature ","description":"","id":44483327},"45128293":{"title":"getConfigurationProperties()","url":"guides/rgcms/rgcms.html#__rgcms_classes_AppManifest-bootstrapping_api_getConfigurationProperties","body":"getConfigurationProperties()  This method allow arbitrary other configuration properties to be overridden. One common use case is in conjunction with the getFixtures() method, discussed above: ","description":" This method allow arbitrary other configuration properties to be overridden. One common use case is in conjunction with the getFixtures
 () method, discussed above: ","id":45128293},"57327287":{"title":"cssClassFa()","url":"guides/rgant/rgant.html#_rgant-ViewModelLayout_cssClassFa","body":"cssClassFa()  The cssClassFa() attribute is used to specify the name of a Font Awesome icon name, to be rendered as the domain object’s icon.  These attribute can also be applied to domain objects to specify the object’s icon, and to actions to specify an icon for the action’s representation as a button or menu item.  If necessary the icon specified can be overridden by a particular object instance using the iconName() method.  For example:  There can be multiple \"fa-\" classes, eg to mirror or rotate the icon. There is no need to include the mandatory fa \"marker\" CSS class; it will be automatically added to the list. The fa- prefix can also be omitted from the class names; it will be prepended to each if required.  The related cssClassFaPosition() attribute is currently unused for domain objects; the icon is always render
 ed to the left. ","description":" The cssClassFa() attribute is used to specify the name of a Font Awesome icon name, to be rendered as the domain object’s icon. ","id":57327287},"64932464":{"title":"Other Guides","url":"guides/ugtst/ugtst.html#_other_guides","body":"Other Guides  Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides.  The user guides available are:  The reference guides are:  The remaining guides are: ","description":" Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides. ","id":64932464},"66604001":{"title":"@Programmatic","url":"guides/rgant/rgant.html#_rgant-Programmatic","body":"@Programmatic ","description":"","id":66604001},"68441589":{"title":"License headers","url":"guides/cgcom/cgcom.html#__cgcom_cutting-a-release_releasing-core_license-headers","body":"License headers  The Apache Release Audit Tool RAT (from the Apache Creadur project) checks
  for missing license header files. The parent pom.xml of each releasable module specifies the RAT Maven plugin, with a number of custom exclusions.  To run the RAT tool, use:  where rat.numUnapprovedLicenses property is set to a high figure, temporarily overriding the default value of 0. This will allow the command to run over all submodules, rather than failing after the first one. The command writes out a target\\rat.txt for each submodule. missing license notes are indicated using the key !???. The for command collates all the errors.  Investigate and fix any reported violations, typically by either:  To add missing headers, use the groovy script addmissinglicenses.groovy (in the scripts directory) to automatically insert missing headers for certain file types. The actual files checked are those with extensions specified in the line def fileEndings = [\".java\", \".htm\"]:  (If the -x is omitted then the script is run in \"dry run\" mode). Once you’ve fixed all issues, confirm 
 once more that apache-rat-plugin no longer reports any license violations, this time leaving the rat.numUnapprovedLicenses property to its default, 0: ","description":" The Apache Release Audit Tool RAT (from the Apache Creadur project) checks for missing license header files. The parent pom.xml of each releasable module specifies the RAT Maven plugin, with a number of custom exclusions. ","id":68441589},"73703450":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_29","body":"New Feature ","description":"","id":73703450},"75054401":{"title":"Supporting Method Prefixes","url":"guides/rgcms/rgcms.html#_rgcms_methods_prefixes","body":"Supporting Method Prefixes  Supporting methods are those that are associated with properties, collections and actions, providing additional imperative business rule checking and behaviour to be performed when the user interacts with those object members.  This association is performed by name matching. Thus, a property called \"f
 irstName\", derived from a method getFirstName() may have supporting methods hideFirstName(), disableFirstName() and validateFirstName(). Supporting methods are, therefore, each characterized by their own particular prefix.  The table below lists the method prefixes that are recognized as part of Apache Isis' default programming model. ","description":" Supporting methods are those that are associated with properties, collections and actions, providing additional imperative business rule checking and behaviour to be performed when the user interacts with those object members. ","id":75054401},"77231561":{"title":"Interaction Execution","url":"guides/rgcms/rgcms.html#_rgcms_schema-ixn","body":"Interaction Execution  The interaction (\"ixn\") schema defines the serialized form of an action invocation or a property edit. In fact, it actually defines a call-graph of such executions for those cases where the WrapperFactory is used to execute sub-actions/property edits.  Each execution id
 entifies the target object, the member to invoke, and the arguments. It also captures metrics about the execution, and the result of the execution (eg return value of an action invocation). ","description":" The interaction (\"ixn\") schema defines the serialized form of an action invocation or a property edit. In fact, it actually defines a call-graph of such executions for those cases where the WrapperFactory is used to execute sub-actions/property edits. ","id":77231561},"78112488":{"title":"Screencast","url":"guides/ugvw/ugvw.html#_screencast","body":"Screencast  This screencast describes the feature. ","description":" This screencast describes the feature. ","id":78112488},"78624086":{"title":"Other Guides","url":"guides/ugsec/ugsec.html#_other_guides","body":"Other Guides  Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides.  The user guides available are:  The reference guides are:  The remaining guides are: ","descrip
 tion":" Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides. ","id":78624086},"80534397":{"title":"ContentMappingService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_ContentMappingService","body":"ContentMappingService  The ContentMappingService supports the (default implementation of the) ContentNegotiationService enabling the RestfulObjects viewer to represent domain objects in some other format as specified by the HTTP Accept header.  See ContentNegotiationService for further discussion. ","description":" The ContentMappingService supports the (default implementation of the) ContentNegotiationService enabling the RestfulObjects viewer to represent domain objects in some other format as specified by the HTTP Accept header. ","id":80534397},"83803344":{"title":"MessageService","url":"guides/rgsvc/rgsvc.html#_rgsvc_application-layer-api_MessageService","body":"MessageService  The MessageService allows domain 
 objects to raise information, warning or error messages. These messages can either be simple strings, or can be translated. ","description":" The MessageService allows domain objects to raise information, warning or error messages. These messages can either be simple strings, or can be translated. ","id":83803344},"83933647":{"title":"Persistence Concerns","url":"guides/ugbtb/ugbtb.html#_persistence_concerns","body":"Persistence Concerns ","description":"","id":83933647},"85931482":{"title":"Task","url":"release-notes/release-notes.html#_task_24","body":"Task ","description":"","id":85931482},"87271564":{"title":"2004:","url":"pages/articles-and-presentations/articles-and-presentations.html#_2004","body":"2004: ","description":"","id":87271564},"90561824":{"title":"Wicket Viewer","url":"release-notes/release-notes.html#_wicket_viewer_8","body":"Wicket Viewer ","description":"","id":90561824},"90935214":{"title":"Wicket Viewer","url":"release-notes/release-notes.html#_wicket_viewer_1
 0","body":"Wicket Viewer ","description":"","id":90935214},"91902412":{"title":"The issue in more detail","url":"guides/ugodn/ugodn.html#_the_issue_in_more_detail","body":"The issue in more detail  Consider these entities (yuml.me/b8681268):  In the course of a transaction, the Agreement entity is loaded into memory (not necessarily modified), and then new AgreementRoles are associated to it.  All these entities implement Comparable using ObjectContracts, and the implementation of AgreementRole's (simplified) is:  while Agreement's is implemented as:  and Party's is similarly implemented as:  DataNucleus’s persistence-by-reachability algorithm adds the AgreementRole instances into a SortedSet, which causes AgreementRole#compareTo() to fire:  In other words, in figuring out whether AgreementRole requires the persistence-by-reachability algorithm to run, it causes the adjacent associated entity Party to also be retrieved. ","description":" Consider these entities (yuml.me/b8681268):
  ","id":91902412},"92467660":{"title":"API and Usage","url":"guides/ugtst/ugtst.html#_ugtst_fixture-scripts_api-and-usage","body":"API and Usage  There are two parts to using fixture scripts: the FixtureScripts domain service class, and the FixtureScript view model class:  Let’s look at FixtureScripts domain service in more detail first. ","description":" There are two parts to using fixture scripts: the FixtureScripts domain service class, and the FixtureScript view model class: ","id":92467660},"95725933":{"title":"Appendix: Isis Add-ons (not ASF)","url":"guides/ugvw/ugvw.html#_ugvw_isis-addons","body":"Appendix: Isis Add-ons (not ASF) ","description":"","id":95725933},"96583162":{"title":"Configure toolchains plugin","url":"guides/cgcom/cgcom.html#_configure_toolchains_plugin","body":"Configure toolchains plugin  Apache Isis releases are built using Java 7, enforced using the maven toolchains plugin. Ensure that Java 7 is installed and the toolchains plugin is configured, as de
 scribed in the contributors' guide. ","description":" Apache Isis releases are built using Java 7, enforced using the maven toolchains plugin. Ensure that Java 7 is installed and the toolchains plugin is configured, as described in the contributors' guide. ","id":96583162},"99090360":{"title":"Running the App","url":"guides/ugfun/ugfun.html#__ugfun_getting-started_simpleapp-archetype_running-the-app","body":"Running the App  The simpleapp archetype generates a single WAR file, configured to run both the Wicket viewer and the Restful Objects viewer. The archetype also configures the DataNucleus/JDO Objectstore to use an in-memory HSQLDB connection.  Once you’ve built the app, you can run the WAR in a variety of ways. ","description":" The simpleapp archetype generates a single WAR file, configured to run both the Wicket viewer and the Restful Objects viewer. The archetype also configures the DataNucleus/JDO Objectstore to use an in-memory HSQLDB connection. ","id":99090360},"100682
 258":{"title":"Update dependencies","url":"guides/cgcom/cgcom.html#_update_dependencies","body":"Update dependencies  With the release complete, now is a good time to bump versions of dependencies (so that there is a full release cycle to identify any possible issues).  You will probably want to create a new JIRA ticket for these updates (or if minor then use the \"catch-all\" JIRA ticket raised earlier for the next release). ","description":" With the release complete, now is a good time to bump versions of dependencies (so that there is a full release cycle to identify any possible issues). ","id":100682258},"102347041":{"title":"Bug","url":"release-notes/release-notes.html#_bug_10","body":"Bug ","description":"","id":102347041},"104167755":{"title":"How to implement a spellchecker?","url":"guides/ugbtb/ugbtb.html#_ugbtb_hints-and-tips_how-to-implement-a-spellchecker","body":"How to implement a spellchecker?  From this thread on the Apache Isis users mailing list:  One way to impl
 ement is to use the event bus:  if if the change is made through an edit, you can use @Property#domainEvent().  You’ll need some way to know which fields should be spell checked. Two ways spring to mind:  And you’ll (obviously) also need some sort of spell checker implementation to call. ","description":" From this thread on the Apache Isis users mailing list: ","id":104167755},"105480253":{"title":"Visitor","url":"guides/ugbtb/ugbtb.html#__code_visitor_code","body":"Visitor  More often than not, you’ll want to visit every element in the metamodel, and so for this you can instead subclass from MetaModelValidatorVisiting.Visitor:  You can then create your custom validator by subclassing MetaModelValidatorComposite and adding the visiting validator:  If you have more than one rule then each can live in its own visitor. ","description":" More often than not, you’ll want to visit every element in the metamodel, and so for this you can instead subclass from MetaModelValidatorVisi
 ting.Visitor: ","id":105480253},"106558909":{"title":"contributedAs()","url":"guides/rgant/rgant.html#_rgant-ActionLayout_contributedAs","body":"contributedAs()  For a domain service action that can be contributed, the contributedAs() attribute determines how it is contributed: as an action or as an association (ie a property or collection).  The distinction between property or collection is automatic: if the action returns a java.util.Collection (or subtype) then the action is contributed as a collection; otherwise it is contributed as a property.  For a domain service action to be contributed, the domain services must have a nature nature of either VIEW or VIEW_CONTRIBUTIONS_ONLY, and the action must have safe action semantics, and takes a single argument, namely the contributee domain object.  For example:  It’s also possible to use the attribute to suppress the action completely:  In such cases, though, it would probably make more sense to annotate the action as either hidden 
 or indeed @Programmatic. ","description":" For a domain service action that can be contributed, the contributedAs() attribute determines how it is contributed: as an action or as an association (ie a property or collection). ","id":106558909},"106606865":{"title":"Using the Wicket Viewer","url":"guides/rgcfg/rgcfg.html#_using_the_wicket_viewer","body":"Using the Wicket Viewer  Most of the you’re likely to run Apache Isis using the Wicket viewer. In this case Apache Isis' \"deployment type\" concept maps to Wicket’s \"configuration\" concept:  Wicket’s mechanism for specifying the \"configuration\" is to use a context parameter in web.xml; Apache Isis automatically infers its own deployment type from this. In other words: ","description":" Most of the you’re likely to run Apache Isis using the Wicket viewer. In this case Apache Isis' \"deployment type\" concept maps to Wicket’s \"configuration\" concept: ","id":106606865},"108721033":{"title":"Incode Catalog","url":"guides/
 ugfun/ugfun.html#_ugfun_available-domain-services_incode-catalog","body":"Incode Catalog  The Incode Catalog website also provides a number of reusable modules, focusing on business logic for generic subdomains.  This section surveys the functionality available.  The modules themselves fall into a number of broader groups:  Each of the modules has a full README and demo application demonstrating their usage. The sections below briefly outline the capabilities of these modules. ","description":" The Incode Catalog website also provides a number of reusable modules, focusing on business logic for generic subdomains. ","id":108721033},"108815435":{"title":"unchanging()","url":"guides/rgant/rgant.html#_rgant-PropertyLayout_unchanging","body":"unchanging()  The unchanging() attribute is used to indicate that the value held by the property never changes over time, even when other properties of the object do change.  Setting this attribute to true is used as a hint to the viewer to not red
 raw the property after an AJAX update of some other property/ies of the object have changed. This is primarily for performance, eg can improve the user experience when rendering PDFs/blobs.  Note that for this to work, the viewer will also ensure that none of the property’s parent component (such as a tab group panel) are re-rendered.  For example: ","description":" The unchanging() attribute is used to indicate that the value held by the property never changes over time, even when other properties of the object do change. ","id":108815435},"109833874":{"title":"Persistable","url":"guides/rgcms/rgcms.html#_rgcms_classes_mixins_Persistable","body":"Persistable  All domain entities automatically implement the DataNucleus Persistable role interface as a result of the enhancer process (the fully qualified class name is org.datanucleus.enhancement.Persistable). So as a developer you do not need to write any code to obtain the mixins that contribute to this interface. ","description":" 
 All domain entities automatically implement the DataNucleus Persistable role interface as a result of the enhancer process (the fully qualified class name is org.datanucleus.enhancement.Persistable). So as a developer you do not need to write any code to obtain the mixins that contribute to this interface. ","id":109833874},"112375674":{"title":"Auditing","url":"migration-notes/migration-notes.html#_auditing","body":"Auditing  The AuditingService SPI service has been deprecated, instead replaced by the AuditerService.  There can be more than one implementation of this new SPI, and a framework-provided implementation (AuditerServiceLogging) will log to a file. The (non-ASF) Isis addons' audit module also implements the new SPI. ","description":" The AuditingService SPI service has been deprecated, instead replaced by the AuditerService. ","id":112375674},"114685873":{"title":"Usage","url":"guides/rgsvc/rgsvc.html#_usage_19","body":"Usage  To indicate that an action invocation should 
 be published, annotate it with the @Action#publishing() annotation.  To indicate that an property edit should be published, annotate it with the @Property#publishing() annotation.  To indicate that a changed object should be published is to annotate it with the @DomainObject#publishing() annotation. ","description":" To indicate that an action invocation should be published, annotate it with the @Action#publishing() annotation. ","id":114685873},"115229271":{"title":"Domain Entities","url":"guides/ugfun/ugfun.html#_ugfun_programming-model_domain-entities","body":"Domain Entities  Entities are persistent domain objects, with their persistence handled by JDO/DataNucleus. As such, they are mapped to a persistent object store, typically an RDBMS, with DataNucleus taking care of both lazy loading and also the persisting of modified (\"dirty\") objects.  Domain entities are generally decorated with both DataNucleus and Apache Isis annotations. Let’s look at some of the most commonly-use
 d annotations.  To start with, entities are flagged as being \"persistence capable\", indicating how JDO/DataNucleus should manage their identity:  All domain entities will have some sort of mandatory key properties. The example below is a very simple case, where the entity is identified by a name property:  It’s also common for domain entities to have queries annotated on them. These are used by repository domain services to query for instances of the entity:  DataNucleus provides several APIs for defining queries, including entirely programmatic and type-safe APIs; but JDOQL is very similar to SQL and so easily learnt.  The corresponding repository method for the above query is: ","description":" Entities are persistent domain objects, with their persistence handled by JDO/DataNucleus. As such, they are mapped to a persistent object store, typically an RDBMS, with DataNucleus taking care of both lazy loading and also the persisting of modified (\"dirty\") objects. ","id":1152292
 71},"117553409":{"title":"Object Icon","url":"guides/ugfun/ugfun.html#_object_icon","body":"Object Icon  The icon is often the same for all instances of a particular class, and is picked up by convention.  It’s is also possible for an individual instance to return a custom icon, typically so that some significant state of that domain object is represented. For example, a custom icon could be used to represent a shipped order, say, or an overdue library loan. ","description":" The icon is often the same for all instances of a particular class, and is picked up by convention. ","id":117553409},"121574190":{"title":"Related Services","url":"guides/rgsvc/rgsvc.html#_related_services_18","body":"Related Services  The ActionInteractionContext service allows bulk actions to co-ordinate with each other.  The QueryResultsCache is useful for caching the results of expensive method calls. ","description":" The ActionInteractionContext service allows bulk actions to co-ordinate with each othe
 r. ","id":121574190},"121879267":{"title":"Wicket Viewer","url":"release-notes/release-notes.html#_wicket_viewer_2","body":"Wicket Viewer ","description":"","id":121879267},"122762699":{"title":"Contributee","url":"guides/rgcms/rgcms.html#_rgcms_classes_contributee","body":"Contributee  The interfaces listed in this chapter act as contributees; they allow domain services to contribute actions/properties/collections to any domain objects that implement these interfaces. ","description":" The interfaces listed in this chapter act as contributees; they allow domain services to contribute actions/properties/collections to any domain objects that implement these interfaces. ","id":122762699},"125299345":{"title":"Example","url":"guides/rgant/rgant.html#_example_2","body":"Example  This example is taken from the (non-ASF) Isis addons' todoapp: ","description":" This example is taken from the (non-ASF) Isis addons' todoapp: ","id":125299345},"125961908":{"title":"Do it!","url":"pages/tg/tg
 .html#_do_it","body":"Do it! ","description":"","id":125961908},"134804772":{"title":"How to handle void/null results","url":"guides/ugbtb/ugbtb.html#_ugbtb_hints-and-tips_how-to-handle-void-and-null-results","body":"How to handle void/null results  From this thread on the Apache Isis users mailing list:  One way to implement this idea is to provide a custom implementation of the RoutingService SPI domain service. The default implementation will either return the current object (if not null), else the home page (as defined by @HomePage) if one exists.  The following custom implementation refines this to use the breadcrumbs (available in the Wicket viewer) to return the first non-deleted domain object found in the list of breadcrumbs:  Note that the above implementation uses Java 8, so if you are using Java 7 then you’ll need to backport accordingly. ","description":" From this thread on the Apache Isis users mailing list: ","id":134804772},"140760147":{"title":"Isis Add-on modules
 ","url":"guides/ugvw/ugvw.html#_isis_add_on_modules","body":"Isis Add-on modules  Some of the (non-ASF) Isis Addons modules also provide services whose actions appear in top-level menus.  The security's module places its domain service menus in three top-level menus:  Meanwhile the devutils module places its actions - to download layouts and so forth - on a \"Prototyping\" top-level menu, on the SECONDARY menu bar.  Currently there is no facility to alter the placement of these services. However, their UI can be suppressed using security or using a vetoing subscriber. ","description":" Some of the (non-ASF) Isis Addons modules also provide services whose actions appear in top-level menus. ","id":140760147},"145340696":{"title":"Registering the Services","url":"guides/rgsvc/rgsvc.html#_registering_the_services_20","body":"Registering the Services  The (non-ASF) Isis addons' audit module provides an implementation of this service (AuditingService), and also provides a number of relate
 d domain services (AuditingServiceMenu, AuditingServiceRepository and AuditingServiceContributions).  Assuming that an AppManifest is being used to bootstrap the app) then this can be activated by updating the pom.xml and updating the AppManifest#getModules() method.  If menu items or contributions are not required in the UI, these can be suppressed either using security or by implementing a vetoing subscriber. ","description":" The (non-ASF) Isis addons' audit module provides an implementation of this service (AuditingService), and also provides a number of related domain services (AuditingServiceMenu, AuditingServiceRepository and AuditingServiceContributions). ","id":145340696},"148135206":{"title":"Layout Metadata Reader (deprecated)","url":"guides/ugbtb/ugbtb.html#_ugbtb_programming-model_layout-metadata-reader","body":"Layout Metadata Reader (deprecated)  The metadata for domain objects is obtained both annotations and files. There is also deprecated support for reading layout
 s from .layout.json files. This service provides an SPI (and default implementation) for reading layouts defined in this fashion. ","description":" The metadata for domain objects is obtained both annotations and files. There is also deprecated support for reading layouts from .layout.json files. This service provides an SPI (and default implementation) for reading layouts defined in this fashion. ","id":148135206},"153666205":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_implementation_17","body":"Implementation  The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.title.TitleServiceDefault). ","description":" The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.title.TitleServiceDefault). ","id":153666205},"155655500":{"title":"@PrimaryKey (javax.jdo)","url":"guides/rgant/rgant.html#_rgant-PrimaryKey","body":"@PrimaryKey (javax.jdo) ","description":"","id":155655500},"15803341
 2":{"title":"SPI","url":"guides/rgsvc/rgsvc.html#_spi_27","body":"SPI  The SPI defined by the service is: ","description":" The SPI defined by the service is: ","id":158033412},"158069558":{"title":"Usability: Defaults","url":"pages/tg/tg.html#_usability_defaults","body":"Usability: Defaults  Quick detour: often we want to set up defaults to go with choices. Sensible defaults for action parameters can really improve the usability of the app. ","description":" Quick detour: often we want to set up defaults to go with choices. Sensible defaults for action parameters can really improve the usability of the app. ","id":158069558},"158897592":{"title":"Refactoring","url":"guides/dg/dg.html#__dg_ide_intellij_hints-and-tips_refactoring","body":"Refactoring  Loads of good stuff on the Refactor menu; most used are:  If you can’t remember all those shortcuts, just use ctrl-shift-alt-T (might want to rebind that to something else!) and get a context-sensitive list of refactorings available f
 or the currently selected object ","description":" Loads of good stuff on the Refactor menu; most used are: ","id":158897592},"159072030":{"title":"(non-ASF) Incode Platform","url":"migration-notes/migration-notes.html#_migration-notes_1.14.0-to-1.15.0_incode-platform","body":"(non-ASF) Incode Platform  (work in progress) The supporting (non-ASF) Isis Addons and Incode Catalog have also been reorganised into a single \"Incode Platform\".  While each module can still be consumed individually, the new platform versions consistently (a change in any one module will result in a re-release of all). This should make these modules easier to consume, and easier to maintain/develop.  All the modules remain open source, still licensed under the ASF v2.0 license.  As of this release, none of the groupIds or artifactIds have changed. They will be rationalized/made consistent in a future release; most probably to coincide with v2.0.0 of the framework. ","description":" (work in progress) The sup
 porting (non-ASF) Isis Addons and Incode Catalog have also been reorganised into a single \"Incode Platform\". ","id":159072030},"160872749":{"title":"Related Services","url":"guides/rgfis/rgfis.html#_related_services","body":"Related Services  The default implementation of ContentNegotiationService delegates to ContentMappingService (if present) to convert domain entities into a stable form (eg DTO).  The ContentNegotiationService is itself called by the (default implementation of) RepresentationService. ","description":" The default implementation of ContentNegotiationService delegates to ContentMappingService (if present) to convert domain entities into a stable form (eg DTO). ","id":160872749},"163456888":{"title":"Dependency upgrade","url":"release-notes/release-notes.html#_dependency_upgrade_9","body":"Dependency upgrade ","description":"","id":163456888},"163915714":{"title":"web.xml","url":"migration-notes/migration-notes.html#_web_xml","body":"web.xml  In the web.xml, the \
 "isis.viewers\" context-param is now ignored. Instead the viewer_wicket.properties and viewer_restfulobjects.properties will both be loaded if present (but neither need be present). ","description":" In the web.xml, the \"isis.viewers\" context-param is now ignored. Instead the viewer_wicket.properties and viewer_restfulobjects.properties will both be loaded if present (but neither need be present). ","id":163915714},"165602306":{"title":"GridLoaderService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_GridLoaderService","body":"GridLoaderService  The GridLoaderService provides the ability to load the XML layout (grid) for a domain class. ","description":" The GridLoaderService provides the ability to load the XML layout (grid) for a domain class. ","id":165602306},"165750333":{"title":"loaded()","url":"guides/rgcms/rgcms.html#_rgcms_methods_lifecycle_loaded","body":"loaded()  The loaded() lifecycle callback method is called when a (persistent) object has just been lo
 aded from the object store. ","description":" The loaded() lifecycle callback method is called when a (persistent) object has just been loaded from the object store. ","id":165750333},"166045728":{"title":"Sanity Check","url":"guides/cgcom/cgcom.html#_sanity_check_2","body":"Sanity Check  Ensure that the framework builds ok using the same command that your CI server is set up to execute (see section above). ","description":" Ensure that the framework builds ok using the same command that your CI server is set up to execute (see section above). ","id":166045728},"166899251":{"title":"Installing and Setting up","url":"guides/dg/dg.html#__dg_ide_intellij_installing","body":"Installing and Setting up  This section covers installation and setup. These notes/screenshots were prepared using IntelliJ Community Edition 14.1.x, but are believed to be compatible with more recent versions/other editions of the IDE. ","description":" This section covers installation and setup. These notes/screen
 shots were prepared using IntelliJ Community Edition 14.1.x, but are believed to be compatible with more recent versions/other editions of the IDE. ","id":166899251},"167039338":{"title":"Task","url":"release-notes/release-notes.html#_task_14","body":"Task ","description":"","id":167039338},"169081251":{"title":"Interaction","url":"guides/rgsvc/rgsvc.html#__code_interaction_code","body":"Interaction  The public API of the Interaction class consists of:  This class is concrete (is also the implementation). ","description":" The public API of the Interaction class consists of: ","id":169081251},"174738887":{"title":"Related functionality","url":"guides/ugvw/ugvw.html#_related_functionality_2","body":"Related functionality  The Recent Pages also lists recently visited pages, selected from a drop-down. ","description":" The Recent Pages also lists recently visited pages, selected from a drop-down. ","id":174738887},"175028546":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_im
 plementation_5","body":"Implementation  The framework provides a default implementation of this service, namely GridServiceDefault. ","description":" The framework provides a default implementation of this service, namely GridServiceDefault. ","id":175028546},"175197970":{"title":"Performance tuning","url":"pages/tg/tg.html#_performance_tuning","body":"Performance tuning  The QueryResultsCache (request-scoped) domain service allows arbitrary objects to be cached for the duration of a request.  This can be helpful for \"naive\" code which would normally make the same query within a loop. ","description":" The QueryResultsCache (request-scoped) domain service allows arbitrary objects to be cached for the duration of a request. ","id":175197970},"175636232":{"title":"RepositoryService","url":"guides/rgsvc/rgsvc.html#_rgsvc_persistence-layer-api_RepositoryService","body":"RepositoryService  The RepositoryService collects together methods for creating, persisting and searching for entiti
 es from the underlying persistence store. It acts as an abstraction over the JDO/DataNucleus objectstore.  You can use it during prototyping to write naive queries (find all rows, then filter using the Guava Predicate API, or you can use it to call JDO named queries using JDOQL.  As an alternative, you could also use JDO typesafe queries through the IsisJdoSupport service. ","description":" The RepositoryService collects together methods for creating, persisting and searching for entities from the underlying persistence store. It acts as an abstraction over the JDO/DataNucleus objectstore. ","id":175636232},"176767338":{"title":"Command and Events","url":"guides/rgsvc/rgsvc.html#__rgsvc_intro_commands-and-events","body":"Command and Events  A good number of the domain services manage the execution of action invocations/property edits, along with the state of domain objects that are modified as a result of these. These services capture information which can then be used for various p
 urposes, most notably for auditing or for publishing events, or for deferring execution such that the execution be performed in the background at some later date.  The diagram below shows how these services fit together. The outline boxes are services while the coloured boxes represent data structures - defined in the applib and therefore accessible to domain applications - which hold various information about the executions.  To explain:  Implementations of CommandService can use the Command#getMemento() method to obtain a XML equivalent of that Command, reified using the cmd.xsd schema. This can be converted back into a CommandDto using the CommandDtoUtils utility class (part of the applib).  Similarly, implementations of PublisherService can use the InteractionDtoUtils utility class to obtain a InteractionDto representing the interaction, either just for a single execution or for the entire call-graph. This can be converted into XML in a similar fashion.  Likewise, the PublishedO
 bjects class passed to the PublisherService at the end of the interaction provides the PublishedObjects#getDto() method which returns a ChangesDto instance. This can be converted into XML using the ChangesDtoUtils utility class.  One final point: multiple PublisherService implementations are supported because different implementations may have different responsibilities. For example, the (non-ASF) Isis addons' publishmq module is responsible for publishing messages onto an ActiveMQ event bus, for inter-system communication. However, the SPI can also be used for profiling; each execution within the call-graph contains metrics of the number of objects loaded or modified as a result of that execution, and thus could be used for application profiling. The framework provides a default PublisherServiceLogging implementation that logs this using SLF4J. ","description":" A good number of the domain services manage the execution of action invocations/property edits, along with the state of d
 omain objects that are modified as a result of these. These services capture information which can then be used for various purposes, most notably for auditing or for publishing events","id":176767338},"178125062":{"title":"domainEvent()","url":"guides/rgant/rgant.html#_rgant-Action_domainEvent","body":"domainEvent()  Whenever a domain object (or list of domain objects) is to be rendered, the framework fires off multiple domain events for every property, collection and action of the domain object. In the cases of the domain object’s actions, the events that are fired are:  Subscribers subscribe through the EventBusService using either Guava or Axon Framework annotations and can influence each of these phases.  By default the event raised is ActionDomainEvent.Default. For example:  The domainEvent() attribute allows a custom subclass to be emitted allowing more precise subscriptions (to those subclasses) to be defined instead. This attribute is also supported for collections and pr
 operties.  For example:  The benefit is that subscribers can be more targeted as to the events that they subscribe to. ","description":" Whenever a domain object (or list of domain objects) is to be rendered, the framework fires off multiple domain events for every property, collection and action of the domain object. In the cases of the domain object’s actions, the events that are fired are: ","id":178125062},"180783343":{"title":"TranslatableException","url":"guides/ugbtb/ugbtb.html#__code_translatableexception_code","body":"TranslatableException  Another mechanism by which messages can be rendered to the user are as the result of exception messages thrown and recognized by an ExceptionRecognizer.  In this case, if the exception implements TranslatableException, then the message will automatically be translated before being rendered. The TranslatableException itself takes the form: ","description":" Another mechanism by which messages can be rendered to the user are as the resul
 t of exception messages thrown and recognized by an ExceptionRecognizer. ","id":180783343},"183226640":{"title":"updatedLifecycleEvent()","url":"guides/rgant/rgant.html#_rgant-DomainObject_updatedLifecycleEvent","body":"updatedLifecycleEvent()  Whenever a (persistent) domain object has been modified and has been updated in the database, an \"updated\" lifecycle event is fired.  Subscribers subscribe through the EventBusService and can use the event to obtain a reference to the domain object.  By default the event raised is ObjectUpdatedEvent.Default. For example:  The purpose of the updatedLifecycleEvent() attribute is to allows a custom subclass to be emitted instead. A similar attribute is available for other lifecycle events.  For example:  The benefit is that subscribers can be more targeted as to the events that they subscribe to. ","description":" Whenever a (persistent) domain object has been modified and has been updated in the database, an \"updated\" lifecycle event is fir
 ed. ","id":183226640},"188123644":{"title":"2013","url":"pages/articles-and-presentations/articles-and-presentations.html#_2013","body":"2013 ","description":"","id":188123644},"189180810":{"title":"HoldsUpdatedAt","url":"guides/rgcms/rgcms.html#_rgcms_classes_roles_HoldsUpdatedAt","body":"HoldsUpdatedAt  The HoldsUpdatedAt role interface allows the (framework-provided) TimestampService to update each object with the current timestamp whenever it is modified in a transaction.  The interface is defined as:  The current time is obtained from the ClockService.  Entities that implement this interface often also implement HoldsUpdatedBy role interface; as a convenience the Timestampable interface combines the two roles. ","description":" The HoldsUpdatedAt role interface allows the (framework-provided) TimestampService to update each object with the current timestamp whenever it is modified in a transaction. ","id":189180810},"191180113":{"title":"persistence.xml","url":"guides/ugodn/ugo
 dn.html#_ugodn_configuring_persistence-xml","body":"persistence.xml  DataNucleus will for itself also and read the META-INF/persistence.xml. In theory it can hold mappings and even connection strings. However, with Apache Isis we tend to use annotations instead and externalize connection strings. so its definition is extremely simply, specifying just the name of the \"persistence unit\".  Here’s the one provided by the SimpleApp archetype:  Normally all one needs to do is to change the persistence-unit name.  See DataNucleus' documentation on persistence.xml to learn more. ","description":" DataNucleus will for itself also and read the META-INF/persistence.xml. In theory it can hold mappings and even connection strings. However, with Apache Isis we tend to use annotations instead and externalize connection strings. so its definition is extremely simply, specifying just the name of the \"persistence unit","id":191180113},"193237835":{"title":"Core","url":"release-notes/release-note
 s.html#_core_8","body":"Core ","description":"","id":193237835},"193497711":{"title":"UI Hints","url":"guides/ugfun/ugfun.html#_ugfun_ui-hints","body":"UI Hints ","description":"","id":193497711},"194608562":{"title":"SPI","url":"guides/rgsvc/rgsvc.html#_spi_19","body":"SPI  The SPI defined by the service is:  where FixtureScriptsSpecification exposes these values:  The class is immutable but it has a builder (obtained using FixturescriptsSpecification.builder(…​)) for a fluent API. ","description":" The SPI defined by the service is: ","id":194608562},"195374240":{"title":"Update the LDAP committee (if a PMC member)","url":"guides/cgcom/cgcom.html#_update_the_ldap_committee_if_a_pmc_member","body":"Update the LDAP committee (if a PMC member)  (Assuming that the new committer is a PMC member), also add them as to the PMC committee. This takes two steps:  The new committer does not officially become a member of the PMC until the ASF records have been updated. ","description":" (A
 ssuming that the new committer is a PMC member), also add them as to the PMC committee. This takes two steps: ","id":195374240},"195848147":{"title":"ICLA, obtain new account","url":"guides/cgcom/cgcom.html#_icla_obtain_new_account","body":"ICLA, obtain new account  If required (that is, if the committer is not already a committer for a different ASF project), then ask them to complete an ICLA. As a result of this, they should also get an @apache.org user name.  More info can be found in the ASF new committers guide. ","description":" If required (that is, if the committer is not already a committer for a different ASF project), then ask them to complete an ICLA. As a result of this, they should also get an @apache.org user name. ","id":195848147},"196560907":{"title":"XJC profile","url":"guides/rgmvn/rgmvn.html#__rgmvn_xsd_xsd-submodule_xjc-profile","body":"XJC profile  The xjc profile reads the XSD generated by the xsd goal, and from it generates Java DTOs. Note that this isn’t 
 round-tripping: the original view model is only for use within the Isis app, whereas the DTO generated from the XSDs is for use in a standalone context, eg in a Java subscriber on an event bus.  The xjc profile is defined as:  The referenced catalog.xml file instructs the xjc plugin how to resolve referenced schema locations. Only a reference for the Apache Isis common schema is likely to be needed: ","description":" The xjc profile reads the XSD generated by the xsd goal, and from it generates Java DTOs. Note that this isn’t round-tripping: the original view model is only for use within the Isis app, whereas the DTO generated from the XSDs is for use in a standalone context","id":196560907},"198329644":{"title":"Strings (Length)","url":"guides/ugfun/ugfun.html#__ugfun_programming-model_properties_datatypes_strings","body":"Strings (Length)  By default JDO/DataNucleus will map string properties to a VARCHAR(255). To limit the length, use the @Column(length=…​) annotation.  For
  example:  This is a good example of a case where Apache Isis infers domain semantics from the JDO annotation. ","description":" By default JDO/DataNucleus will map string properties to a VARCHAR(255). To limit the length, use the @Column(length=…​) annotation. ","id":198329644},"198382465":{"title":"Actions","url":"pages/tg/tg.html#_actions","body":"Actions  Most business functionality is implemented using actions basically a public method accepting domain classes and primitives as its parameter types. The action can return a domain entity, or a collection of entities, or a primitive/String/value, or void. If a domain entity is returned then that object is rendered immediately; if a collection is returned then the Wicket viewer renders a table. Such collections are sometimes called \"standalone\" collections. ","description":" Most business functionality is implemented using actions basically a public method accepting domain classes and primitives as its parameter types. The ac
 tion can return a domain entity, or a collection of entities, or a primitive/String/value, or void. If a domain entity is returned then that object is rendered","id":198382465},"203208629":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_18","body":"New Feature ","description":"","id":203208629},"203740710":{"title":"RoutingService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_RoutingService","body":"RoutingService  The RoutingService provides the ability to return (and therefore render) an alternative object from an action invocation.  There are two primary use cases:  Currently the routing service is used only by the Wicket viewer; it is ignored by the Restful Objects viewer. ","description":" The RoutingService provides the ability to return (and therefore render) an alternative object from an action invocation. ","id":203740710},"204452611":{"title":"Related services","url":"guides/rgsvc/rgsvc.html#_related_services_15","body":"Related 
 services  The ConfigurationServiceMenu exposes the allConfigurationProperties action in the user interface. ","description":" The ConfigurationServiceMenu exposes the allConfigurationProperties action in the user interface. ","id":204452611},"207811701":{"title":"API","url":"guides/rgsvc/rgsvc.html#_api_2","body":"API  The API of TitleService is: ","description":" The API of TitleService is: ","id":207811701},"209853740":{"title":"To run","url":"guides/rgmvn/rgmvn.html#_to_run","body":"To run  The plugin is activated by default, so is run simply using:  This will run any tests, and then also - because the plugin is activated by the isis-validate property and bound to the test phase, will run the plugin’s validate goal.  If for any reason you want to disable the validation, use: ","description":" The plugin is activated by default, so is run simply using: ","id":209853740},"213642269":{"title":"Moving on","url":"guides/ugfun/ugfun.html#__ugfun_getting-started_helloworld-archetype_m
 oving-on","body":"Moving on  When you are ready to start working on your own app, we don’t recommend building on top of the helloworld app.  Instead, we suggest that you start with the simpleapp archetype instead. Although a little more complex, it provides more structure and tests, all of which will help you as your application grows. ","description":" When you are ready to start working on your own app, we don’t recommend building on top of the helloworld app. ","id":213642269},"216231183":{"title":"Raising a pull request","url":"guides/dg/dg.html#_raising_a_pull_request","body":"Raising a pull request  If you have your own fork, you can now simply push the changes you’ve made locally to your fork:  This will create a corresponding branch in the remote github repo. If you use gitk --all, you’ll also see a remotes/origin/ISIS-123-blobs branch.  Then, use github to raise a pull request. Pull requests sent to the Apache GitHub repositories will forward a pull request e-mail t
 o the dev mailing list. You’ll probably want to sign up to the dev mailing list first before issuing your first pull request (though that isn’t mandatory).  The process to raise the pull request, broadly speaking: ","description":" If you have your own fork, you can now simply push the changes you’ve made locally to your fork: ","id":216231183},"220685197":{"title":"AbstractSubscriber","url":"guides/rgcms/rgcms.html#_rgcms_classes_super_AbstractSubscriber","body":"AbstractSubscriber  This is a convenience superclass for creating subscriber domain services on the EventBusService. It uses @PostConstruct and @PreDestroy callbacks to automatically register/unregister itself with the EventBusService.  It’s important that subscribers register before any domain services that might emit events on the EventBusService. For example, the (non-ASF) Isis addons' security module provides a domain service that automatically seeds certain domain entities; these will generate lifecycle events
  and so any subscribers must be registered before such seed services. The easiest way to do this is to use the @DomainServiceLayout#menuOrder() attribute.  As a convenience, the AbstractSubscriber specifies this attribute. ","description":" This is a convenience superclass for creating subscriber domain services on the EventBusService. It uses @PostConstruct and @PreDestroy callbacks to automatically register/unregister itself with the EventBusService. ","id":220685197},"221961571":{"title":"Release prepare \"dry run\"","url":"guides/cgcom/cgcom.html#__cgcom_cutting-a-release_releasing-core_release-prepare-dry-run","body":"Release prepare \"dry run\"  Most of the work is done using the mvn release:prepare goal. Since this makes a lot of changes, we run it first in \"dry run\" mode; only if that works do we run the goal for real.  Run the dry-run as follows:  You may be prompted for the gpg passphrase. ","description":" Most of the work is done using the mvn release:prepare goal. Sin
 ce this makes a lot of changes, we run it first in \"dry run\" mode; only if that works do we run the goal for real. ","id":221961571},"224301547":{"title":"IsisWebAppBootstrapper","url":"guides/ugbtb/ugbtb.html#__code_isiswebappbootstrapper_code","body":"IsisWebAppBootstrapper  The IsisWebAppBootstrapper servlet context listener bootstraps the shared (global) metadata for the Apache Isis framework. This listener is not required (indeed must not be configured) if the Wicket viewer is in use.  Its definition is:  Its context parameters are: ","description":" The IsisWebAppBootstrapper servlet context listener bootstraps the shared (global) metadata for the Apache Isis framework. This listener is not required (indeed must not be configured) if the Wicket viewer is in use. ","id":224301547},"227377078":{"title":"Initialization","url":"guides/ugfun/ugfun.html#_ugfun_programming-model_domain-services_initialization","body":"Initialization  Services can optionally declare lifecycle callba
 cks to initialize them (when the app is deployed) and to shut them down (when the app is undeployed).  An Apache Isis session is available when initialization occurs (so services can interact with the object store, for example).  The framework will call any public method annotated with @PostConstruct with either no arguments of an argument of type Map<String,String>. In the latter case, the framework passes in the configuration (isis.properties and any other component-specific configuration files).  Shutdown is similar; the framework will call any method annotated with @PreDestroy. ","description":" Services can optionally declare lifecycle callbacks to initialize them (when the app is deployed) and to shut them down (when the app is undeployed). ","id":227377078},"228550183":{"title":"Policies","url":"guides/cgcom/cgcom.html#_cgcom_policies","body":"Policies ","description":"","id":228550183},"229025509":{"title":"Remove references to isis-viewer-wicket parent pom.","url":"migratio
 n-notes/migration-notes.html#_remove_references_to_code_isis_viewer_wicket_code_parent_pom","body":"Remove references to isis-viewer-wicket parent pom.  In earlier releases the Wicket viewer defined its own parent pom.xml for dependency management and its dependencies and to declare the various submodules that make up the viewer. This pom.xml has now been incorporated into the parent pom.xml for the Core framework.  Therefore, in the parent pom.xml of your own domain applications, remove: ","description":" In earlier releases the Wicket viewer defined its own parent pom.xml for dependency management and its dependencies and to declare the various submodules that make up the viewer. This pom.xml has now been incorporated into the parent pom.xml for the Core framework. ","id":229025509},"230599582":{"title":"AuditingServiceInternal","url":"guides/rgfis/rgfis.html#_rgfis_persistence-layer_AuditingServiceInternal","body":"AuditingServiceInternal  The (internal) AuditingServiceInternal d
 omain service acts as an internal facade to any configured AuditingService and AuditerService services. It is responsible for obtaining the details of all changes to domain objects within an interaction, and then to call the configured AuditingService to actually create audit entries of those changes. ","description":" The (internal) AuditingServiceInternal domain service acts as an internal facade to any configured AuditingService and AuditerService services. It is responsible for obtaining the details of all changes to domain objects within an interaction, and then to call the configured AuditingService to actually create audit entries of those changes. ","id":230599582},"232471644":{"title":"Registering Subscribers","url":"guides/rgsvc/rgsvc.html#_registering_subscribers","body":"Registering Subscribers  The register() method should be called in the @PostConstruct lifecycle method. It is valid and probably the least confusing to readers to also \"unregister\" in the @PreDestroy l
 ifecycle method (though as noted above, unregistering is actually a no-op).  For example:  This works for both singleton (application-scoped) and also @RequestScoped domain services. ","description":" The register() method should be called in the @PostConstruct lifecycle method. It is valid and probably the least confusing to readers to also \"unregister\" in the @PreDestroy lifecycle method (though as noted above, unregistering is actually a no-op). ","id":232471644},"235512052":{"title":"Usage","url":"guides/rgsvc/rgsvc.html#_usage_21","body":"Usage  The usage will vary depending upon the conventions of the design. As of 1.9.0, the usage of the service has been centralized such that the packages to be scanned are located from the AppManifest's #getModules() method.  For example, the SimpleApp archetype's app manifest includes:  where the three module classes in effect define three different package prefixes to search under (for domain services, fixture scripts and persistent entit
 ies).  Other usages of the ClassDiscoveryService are likely to work in a similar way, requiring some sort of scope to be specified. ","description":" The usage will vary depending upon the conventions of the design. As of 1.9.0, the usage of the service has been centralized such that the packages to be scanned are located from the AppManifest's #getModules() method. ","id":235512052},"238546442":{"title":"rebuildMetamodel()","url":"guides/rgcms/rgcms.html#__rgcms_classes_mixins_Object_rebuildMetamodel","body":"rebuildMetamodel()  The Object_rebuildMetamodel mixin provides the ability to discard the current internal metamodel data (an instance of ObjectSpecification) for the domain class of the rendered object, and recreate from code and other sources (most notably, layout XML data). It has the following signature: ","description":" The Object_rebuildMetamodel mixin provides the ability to discard the current internal metamodel data (an instance of ObjectSpecification) for the domain
  class of the rendered object, and recreate from code and other sources (most notably, layout XML data). It has the following signature: ","id":238546442},"238979657":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_22","body":"New Feature ","description":"","id":238979657},"240026998":{"title":"Improvement","url":"release-notes/release-notes.html#_improvement_14","body":"Improvement ","description":"","id":240026998},"242030985":{"title":"1.4.0","url":"release-notes/release-notes.html#_release-notes_1.4.0","body":"1.4.0 ","description":"","id":242030985},"243439147":{"title":"hidden()","url":"guides/rgant/rgant.html#_rgant-Property_hidden","body":"hidden()  Properties can be hidden at the domain-level, indicating that they are not visible to the end-user. This attribute can also be applied to actions and collections.  For example:  The acceptable values for the where parameter are:  For example, if a property is annotated with @Title, then normally this s
 hould be hidden from all tables. Annotating with @Property(where=Where.NOWHERE) overrides this. ","description":" Properties can be hidden at the domain-level, indicating that they are not visible to the end-user. This attribute can also be applied to actions and collections. ","id":243439147},"243876171":{"title":"Task","url":"release-notes/release-notes.html#_task_28","body":"Task ","description":"","id":243876171},"244520152":{"title":"SessionLoggingService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_SessionLoggingService","body":"SessionLoggingService  The SessionLoggingService defines an SPI to keep track of (typically: to log) the current sessions that are using the application. ","description":" The SessionLoggingService defines an SPI to keep track of (typically: to log) the current sessions that are using the application. ","id":244520152},"246275568":{"title":"Registering the Services","url":"guides/rgsvc/rgsvc.html#_registering_the_services_4","body":"Re
 gistering the Services  Assuming that the configuration-and-annotation services installer is configured (implicit if using the AppManifest to bootstrap the app), then the default implementation of GridLoaderService is automatically registered and injected, and no further configuration is required.  To use an alternative implementation, use @DomainServiceLayout#menuOrder() (as explained in the introduction to this guide). That said, there should be little reason to use a different implementation; if behaviour does need to be changed, it would also be possible to replace the implementation of either the GridLoaderService or the GridSystemService. ","description":" Assuming that the configuration-and-annotation services installer is configured (implicit if using the AppManifest to bootstrap the app), then the default implementation of GridLoaderService is automatically registered and injected, and no further configuration is required. ","id":246275568},"246409050":{"title":"Using syste
 m properties","url":"guides/ugbtb/ugbtb.html#_using_system_properties","body":"Using system properties  The servlet context initializer will search for any system properties called isis.xxx and if present will use them as overrides.  Thus, an alternative option for a Docker image is to bootstrap the servlet container (Tomcat, Jetty) with appropriate system properties set up. For example, with Tomcat this can be done by writing into the conf/catalina.properties file (see for example this stackoverflow post).  The Docker’s ENTRYPOINT therefore just needs to parse the Docker container’s own command line arguments and use to create this file. ","description":" The servlet context initializer will search for any system properties called isis.xxx and if present will use them as overrides. ","id":246409050},"251015067":{"title":"myapp-dom Module","url":"migration-notes/migration-notes.html#__code_myapp_dom_code_module","body":"myapp-dom Module  In your myapp-dom module (containing defi
 nitions of your persistent entities and domain services), create an empty class to represent the module. This should be at the root package for the domain, eg:  Since there is no requirement to actually instantiate this class (it merely provides the location of the myapp.dom package), we give it a private constructor.  If you have any other modules where you have either domain services or entities, similarly create an empty \"module\" class. ","description":" In your myapp-dom module (containing definitions of your persistent entities and domain services), create an empty class to represent the module. This should be at the root package for the domain, eg: ","id":251015067},"255768608":{"title":"Multi-tenancy support","url":"pages/isis-in-pictures/isis-in-pictures.html#_multi_tenancy_support","body":"Multi-tenancy support  Of the various Isis Addons, the security module has the most features. One significant feature is the ability to associate users and objects with a \"tenancy\". T
 he todoapp uses this feature so that different users' list of todo items are kept separate from one another. A user with administrator is able to switch their own \"tenancy\" to the tenancy of some other user, in order to access the objects in that tenancy:  For more details, see the security module README. ","description":" Of the various Isis Addons, the security module has the most features. One significant feature is the ability to associate users and objects with a \"tenancy\". The todoapp uses this feature so that different users' list of todo items are kept separate from one another. A user with administrator is","id":255768608},"257661017":{"title":"AppManifest (bootstrapping)","url":"guides/rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping","body":"AppManifest (bootstrapping)  This section describes how to implement the AppManifest interface to bootstrap both an Apache Isis web application, and also its integration tests. ","description":" This section describes how
  to implement the AppManifest interface to bootstrap both an Apache Isis web application, and also its integration tests. ","id":257661017},"259358868":{"title":"Hints and Tips","url":"guides/ugodn/ugodn.html#_ugodn_hints-and-tips","body":"Hints and Tips ","description":"","id":259358868},"266250802":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_implementation_2","body":"Implementation  The (non-ASF) Isis addons' kitchensink app provides an example implementation:  which is rendered as: ","description":" The (non-ASF) Isis addons' kitchensink app provides an example implementation: ","id":266250802},"267695496":{"title":"Building Apache Isis","url":"guides/dg/dg.html#_dg_building-isis","body":"Building Apache Isis ","description":"","id":267695496},"273843820":{"title":"Simulated UI (WrapperFactory)","url":"guides/ugtst/ugtst.html#_simulated_ui_code_wrapperfactory_code","body":"Simulated UI (WrapperFactory)  When we talk about integration tests/specs here, we mean tests 
 that exercise the domain object logic, through to the actual database. But we also want the tests to exercise the app from the users’s perspective, which means including the user interface.  For most other frameworks that would require having to test the application in a very heavy weight/fragile fashion using a tool such as Selenium, driving a web browser to navigate . In this regard though, Apache Isis has a significant trick up its sleeve. Because Apache Isis implements the naked objects pattern, it means that the UI is generated automatically from the UI. This therefore allows for other implementations of the UI.  The WrapperFactory domain service allows a test to wrap domain objects and thus to interact with said objects \"as if\" through the UI:  If the test invokes an action that is disabled, then the wrapper will throw an appropriate exception. If the action is ok to invoke, it delegates through.  What this means is that an Isis application can be tested end-to-end without
  having to deploy it onto a webserver; the whole app can be tested while running in-memory. Although integration tests re (necessarily) slower than unit tests, they are not any harder to write (in fact, in some respects they are easier). ","description":" When we talk about integration tests/specs here, we mean tests that exercise the domain object logic, through to the actual database. But we also want the tests to exercise the app from the users’s perspective, which means including the user interface. ","id":273843820},"273985863":{"title":"addTo…​() (deprecated)","url":"guides/rgcms/rgcms.html#_rgcms_methods_prefixes_addTo","body":"addTo…​() (deprecated)  The addTo…​() supporting method is called whenever an object is added to a collection. Its purpose is to allow additional business logic to be performed.  For example:  See also removeFrom…​()` ","description":" The addTo…​() supporting method is called whenever an object is added to a collection. Its purpo
 se is to allow additional business logic to be performed. ","id":273985863},"278859977":{"title":"promptStyle()","url":"guides/rgant/rgant.html#_rgant-PropertyLayout_promptStyle","body":"promptStyle()  The promptStyle() attribute is used to specify whether, when editing a domain object property, the new value for the property is prompted by way of a dialog box, or is prompted using an inline panel (replacing the property on the page).  If the attribute is not set, then the value of the configuration property isis.viewer.wicket.promptStyle is used. If this is itself not set, then an inline prompt is used.  For example:  Alternatively, the promptStyle() can be specified using file-based layouts. ","description":" The promptStyle() attribute is used to specify whether, when editing a domain object property, the new value for the property is prompted by way of a dialog box, or is prompted using an inline panel (replacing the property on the page). ","id":278859977},"278890330":{"title":
 "Build a domain app","url":"pages/tg/tg.html#_build_a_domain_app","body":"Build a domain app  The remainder of the tutorial provides guidance on building a domain application. We don’t mandate any particular design, but we suggest one with no more than 3 to 6 domain entities in the first instance. If you’re stuck for ideas, then how about:  Hopefully one of those ideas appeals or sparks an idea for something of your own. ","description":" The remainder of the tutorial provides guidance on building a domain application. We don’t mandate any particular design, but we suggest one with no more than 3 to 6 domain entities in the first instance. If you’re stuck for ideas, then how about: ","id":278890330},"278999912":{"title":"Integration API","url":"guides/rgsvc/rgsvc.html#_rgsvc_integration-api","body":"Integration API ","description":"","id":278999912},"282766365":{"title":"Object CSS Styling","url":"guides/ugfun/ugfun.html#_object_css_styling","body":"Object CSS Styling  It is
  also possible for an object to return a CSS class. In conjunction with customized CSS this can be used to apply arbitrary styling; for example each object could be rendered in a page with a different background colour. ","description":" It is also possible for an object to return a CSS class. In conjunction with customized CSS this can be used to apply arbitrary styling; for example each object could be rendered in a page with a different background colour. ","id":282766365},"283629224":{"title":"App Structure","url":"guides/ugfun/ugfun.html#_app_structure","body":"App Structure  As noted above, the generated app is a very simple application consisting of a single domain object that can be easily renamed and extended. The intention is not to showcase all of Apache Isis' capabilities; rather it is to allow you to very easily modify the generated application (eg rename SimpleObject to Customer) without having to waste time deleting lots of generated code.  If you run into issues, ple
 ase don’t hesitate to ask for help on the users mailing list. ","description":" As noted above, the generated app is a very simple application consisting of a single domain object that can be easily renamed and extended. The intention is not to showcase all of Apache Isis' capabilities; rather it is to allow you to very easily modify the generated application (eg rename","id":283629224},"285898371":{"title":"ObjectUpdatedEvent","url":"guides/rgcms/rgcms.html#_rgcms_classes_lifecycleevent_ObjectUpdatedEvent","body":"ObjectUpdatedEvent  Subclass of AbstractLifecycleEvent, broadcast when an object has just been updated in the database. This is done either explicitly when the current transaction is flushed using the DomainObjectContainer's #flush(…​) method, else is done implicitly when the transaction commits at the end of the user request.  ObjectUpdatedEvent.Default is the concrete implementation that is used. ","description":" Subclass of AbstractLifecycleEvent, broadcast when
  an object has just been updated in the database. This is done either explicitly when the current transaction is flushed using the DomainObjectContainer's #flush(…​) method, else is done implicitly when the transaction commits at the end of the user request. ","id":285898371},"286850218":{"title":"Dependent choices for action parameters","url":"guides/ugfun/ugfun.html#_dependent_choices_for_action_parameters","body":"Dependent choices for action parameters  For action it is also possible (in a limited form) to define dependencies between parameters. Specifically, if one parameter is a drop-down choice, then other drop-down choices can be derived from it.  A good example is a category/sub-category:  Note how the choices method for the 2nd parameter also accepts the first parameter. ","description":" For action it is also possible (in a limited form) to define dependencies between parameters. Specifically, if one parameter is a drop-down choice, then other drop-down choices can be
  derived from it. ","id":286850218},"287120012":{"title":"Actions","url":"guides/ugfun/ugfun.html#_actions_2","body":"Actions  Of course, the precondition business rules described above are only one type of business rule.  More generally, business rules are implemented in the form of the implementation of actions. Rather than have the end-user have to edit individual properties of numerous objects, an action can encode these rules and allow only safe transformations of the application from one consistent state to the next. ","description":" Of course, the precondition business rules described above are only one type of business rule. ","id":287120012},"288377989":{"title":"Philosophy and Architecture","url":"guides/ugfun/ugfun.html#_ugfun_core-concepts_philosophy","body":"Philosophy and Architecture  This section describes some of the core ideas and architectural patterns upon which Apache Isis builds. ","description":" This section describes some of the core ideas and architectural
  patterns upon which Apache Isis builds. ","id":288377989},"288392697":{"title":"User Experience","url":"guides/ugvw/ugvw.html#_user_experience_3","body":"User Experience  The copy URL dialog is typically obtained by clicking on the icon.  Alternatively, alt+] will also open the dialog. It can be closed with either OK or the Esc key. ","description":" The copy URL dialog is typically obtained by clicking on the icon. ","id":288392697},"291813215":{"title":"Raising events programmatically","url":"guides/rgant/rgant.html#_raising_events_programmatically","body":"Raising events programmatically  Normally events are only raised for interactions through the UI. However, events can be raised programmatically either by calling the EventBusService API directly, or by emulating the UI by wrapping the target object using the WrapperFactory domain service. ","description":" Normally events are only raised for interactions through the UI. However, events can be raised programmatically either by
  calling the EventBusService API directly, or by emulating the UI by wrapping the target object using the WrapperFactory domain service. ","id":291813215},"293860175":{"title":"Usage","url":"guides/rgsvc/rgsvc.html#_usage_10","body":"Usage  The most common use-case is for bulk actions that act upon multiple objects in a list. The (same) Scratchpad service is injected into each of these objects, and so they can use pass information.  For example, the Isis addons example todoapp (not ASF) demonstrates how the Scratchpad service can be used to calculate the total cost of the selecte

<TRUNCATED>

[9/9] isis-site git commit: Merge branch 'ISIS-1712_pr-95'

Posted by da...@apache.org.
Merge branch 'ISIS-1712_pr-95'


Project: http://git-wip-us.apache.org/repos/asf/isis-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis-site/commit/8566a8ed
Tree: http://git-wip-us.apache.org/repos/asf/isis-site/tree/8566a8ed
Diff: http://git-wip-us.apache.org/repos/asf/isis-site/diff/8566a8ed

Branch: refs/heads/asf-site
Commit: 8566a8ed616cca02da77c47a164276457a2931e1
Parents: fa1a7ca
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Sep 22 13:44:49 2017 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Sep 22 13:44:49 2017 +0100

----------------------------------------------------------------------
 content/elasticlunr/index.json |    2 +-
 content/guides/ugvw/ugvw.html  |    1 -
 content/guides/ugvw/ugvw.pdf   | 1297 +++++++++++++++++------------------
 3 files changed, 625 insertions(+), 675 deletions(-)
----------------------------------------------------------------------



[3/9] isis-site git commit: ISIS-1712: fixes bad link in release docs

Posted by da...@apache.org.
ISIS-1712: fixes bad link in release docs


Project: http://git-wip-us.apache.org/repos/asf/isis-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis-site/commit/3b078e07
Tree: http://git-wip-us.apache.org/repos/asf/isis-site/tree/3b078e07
Diff: http://git-wip-us.apache.org/repos/asf/isis-site/diff/3b078e07

Branch: refs/heads/asf-site
Commit: 3b078e0731674dd9404945fc719f0c7b9af0bdeb
Parents: b416644
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Sep 22 12:13:00 2017 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Sep 22 12:13:00 2017 +0100

----------------------------------------------------------------------
 content/elasticlunr/index.json  |    2 +-
 content/guides/cgcom/cgcom.html |    2 +-
 content/guides/cgcom/cgcom.pdf  | 1237 +++++++++++++++++-----------------
 3 files changed, 626 insertions(+), 615 deletions(-)
----------------------------------------------------------------------



[5/9] isis-site git commit: ISIS-1712: fixes tiny error in relesae guide

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/fa1a7ca4/content/elasticlunr/index.json
----------------------------------------------------------------------
diff --git a/content/elasticlunr/index.json b/content/elasticlunr/index.json
index 02e6502..786919e 100644
--- a/content/elasticlunr/index.json
+++ b/content/elasticlunr/index.json
@@ -1 +1 @@
-{"version":"0.9.5","fields":["title","body","description","url"],"ref":"id","documentStore":{"docs":{"372886":{"title":"Rows, full-width cols, and tabs","url":"guides/ugvw/ugvw.html#_rows_full_width_cols_and_tabs","body":"Rows, full-width cols, and tabs  The example layout consists of three rows: a row for the object/icon, a row containing a properties, and a row containing collections. In all three cases the row contains a single column spanning the full width of the page. For the property and collection rows, the column contains a tab group.  This corresponds to the following XML:  You will notice that one of the columns has an unreferencedActions attribute, while one of the tabGroups has a similar unreferencedCollections attribute. This topic is discussed in more detail below. ","description":" The example layout consists of three rows: a row for the object/icon, a row containing a properties, and a row containing collections. In all three cases the row contains a single column s
 panning the full width of the page. For the property and collection rows, the column contains a","id":372886},"2646929":{"title":"Apache Isis vs …​","url":"guides/ugfun/ugfun.html#_ugfun_core-concepts_apache-isis-vs","body":"Apache Isis vs …​  Many other frameworks promise rapid application development and provide automatically generated user interfaces, so how do they compare to Apache Isis? ","description":" Many other frameworks promise rapid application development and provide automatically generated user interfaces, so how do they compare to Apache Isis? ","id":2646929},"3836440":{"title":"Running","url":"guides/dg/dg.html#__dg_ide_intellij_running","body":"Running  Let’s see how to run both the app and the tests. ","description":" Let’s see how to run both the app and the tests. ","id":3836440},"11600575":{"title":"Using Contributions","url":"pages/tg/tg.html#_using_contributions","body":"Using Contributions  One of Apache Isis' most powerful features is the abilit
 y for the UI to combine functionality from domain services into the representation of an entity. The effect is similar to traits or mix-ins in other languages, however the \"mixing in\" is done at runtime, within the Apache Isis metamodel. In Apache Isis' terminology, we say that the domain service action is contributed to the entity.  Any action of a domain service that has a domain entity type as one of its parameter types will (by default) be contributed. If the service action takes more than one argument, or does not have safe semantics, then it will be contributed as an entity action. If the service action has precisely one parameter type (that of the entity) and has safe semantics then it will be contributed either as a collection or as a property (dependent on whether it returns a collection of a scalar).  Why are contributions so useful? Because the service action will match not on the entity type, but also on any of the entity’s supertypes (all the way up to java.lang.Obj
 ect). That means that you can apply the dependency inversion principle to ensure that the modules of your application have acyclic dependencies; but in the UI it can still appear as if there are bidirectional dependencies between those modules. The lack of bidirectional dependencies can help save your app degrading into a big ball of mud.  Finally, note that the layout of contributed actions/collections/properties can be specified using the .layout.json file (and it is highly recommended that you do so). ","description":" One of Apache Isis' most powerful features is the ability for the UI to combine functionality from domain services into the representation of an entity. The effect is similar to traits or mix-ins in other languages, however the \"mixing in\" is done at runtime, within the Apache Isis metamodel","id":11600575},"12649581":{"title":"Mark the version as released","url":"guides/cgcom/cgcom.html#_mark_the_version_as_released","body":"Mark the version as released  In JIRA
 , go to the administration section for the Apache Isis project and update the version as being released.  In the Kanban view this will have the effect of marking all tickets as released (clearing the \"done\" column). ","description":" In JIRA, go to the administration section for the Apache Isis project and update the version as being released. ","id":12649581},"13573617":{"title":"hide…​()","url":"guides/rgcms/rgcms.html#_rgcms_methods_prefixes_hide","body":"hide…​()  The hide…​() supporting method is called for properties, collections and actions. It allows the property/collection to be completely hidden from view.  It’s comparatively rare for properties or collections to be imperatively hidden from view, but actions are sometimes hidden or shown visible (as opposed to being just disabled, ie greyed out).  The signature of the supporting method is simply:  Returning true will hide the property, collection or action, returning false leaves it visible.  For example, t
 o hide an action:  Or, to hide a property: ","description":" The hide…​() supporting method is called for properties, collections and actions. It allows the property/collection to be completely hidden from view. ","id":13573617},"14971197":{"title":"Suppressing 'remember me'","url":"guides/ugvw/ugvw.html#_ugvw_configuration-properties_suppressing-remember-me","body":"Suppressing 'remember me'  The 'remember me' checkbox on the login page can be suppressed, if required, by setting a configuration flag. ","description":" The 'remember me' checkbox on the login page can be suppressed, if required, by setting a configuration flag. ","id":14971197},"16629694":{"title":"allowLateRegistration","url":"migration-notes/migration-notes.html#__code_allowlateregistration_code","body":"allowLateRegistration  One possible issue is that (as per ISIS-830) the EventBusService is now initialized as one of the first domain services; this is to ensure that any object lifecycle events caused by domai
 n services initializing themselves can be posted on the event bus for subscribers. The typical case for such lifecycle events to occur is from domain services that seed reference data; one such example can be found in the (non-ASF) Isis addons' security module.  In previous releases, the ordering of initialization for the EventBusService was undefined (but would typically be towards the \"end\" of the list of services. What this meant in practice is that it generally didn’t matter whether (domain service) subscribers were initialized before or after seed services.  Now, though, because the EventBusService is initialized early on, it proactively checks that all subscribers have been registered before any event posts occur (so that no events get missed). If any subscriber attempts to register after at least one event has been posted, then the service will fail fast and the framework will not start. The error looks something like:  To ensure that subscriber domain services are initia
 lized before \"seed\" domain services, the @DomainServiceLayout#menuOrder() attribute can be used. Normally this attribute is just used to order UI-visible services on the menu bars, but it also is used internally to sequence the internal list of services being initialized.  Alternatively, you can disable this checking within the EventBusService using:  If you do that, be aware that not all subscribers may not receive some events generated by other domain services.  For more details, see the EventBusService man page. ","description":" One possible issue is that (as per ISIS-830) the EventBusService is now initialized as one of the first domain services; this is to ensure that any object lifecycle events caused by domain services initializing themselves can be posted on the event bus for subscribers. The typical case for such","id":16629694},"17000573":{"title":"ObjectCreatedEvent","url":"guides/rgcms/rgcms.html#_rgcms_classes_lifecycleevent_ObjectCreatedEvent","body":"ObjectCreatedE
 vent  Subclass of AbstractLifecycleEvent, broadcast when an object is first instantiated using the DomainObjectContainer's #newTransientInstance(…​) method.  ObjectCreatedEvent.Default is the concrete implementation that is used. ","description":" Subclass of AbstractLifecycleEvent, broadcast when an object is first instantiated using the DomainObjectContainer's #newTransientInstance(…​) method. ","id":17000573},"17618894":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_20","body":"New Feature ","description":"","id":17618894},"17724516":{"title":"Multi-select action parameters","url":"guides/ugfun/ugfun.html#_multi_select_action_parameters","body":"Multi-select action parameters  As well as scalar values, action parameters can also be collections. For this to be valid, a choices or autoComplete supporting method must be provided.  For example, suppose we want to \"tag\" or \"label\" an object: ","description":" As well as scalar values, action pa
 rameters can also be collections. For this to be valid, a choices or autoComplete supporting method must be provided. ","id":17724516},"18445041":{"title":"Verifying Releases","url":"downloads.html#_verifying_releases","body":"Verifying Releases ","description":"","id":18445041},"19254915":{"title":"API & Implementation","url":"guides/rgsvc/rgsvc.html#_api_implementation_7","body":"API & Implementation  The API of Scratchpad service is:  This class (o.a.i.applib.services.scratchpad.Scratchpad) is also the implementation. And, as you can see, the service is just a request-scoped wrapper around a java.util.Map. ","description":" The API of Scratchpad service is: ","id":19254915},"21190750":{"title":"Run the archetype","url":"pages/tg/tg.html#_run_the_archetype","body":"Run the archetype  Throughout this tutorial you can, if you wish, just checkout from the github repo wherever you see a \"git checkout\" note:  Run the simpleapp archetype to build an empty Isis application. With the *n
 ix bash shell, use:  Adjust as necessary if using Windows cmd.exe or Powershell.  This will generate the app in a petclinic directory. Move the contents back: ","description":" Throughout this tutorial you can, if you wish, just checkout from the github repo wherever you see a \"git checkout\" note: ","id":21190750},"21212015":{"title":"Key features","url":"pages/powered-by/powered-by.html#_key_features","body":"Key features ","description":"","id":21212015},"21857601":{"title":"Other Guides","url":"guides/cgcom/cgcom.html#_other_guides","body":"Other Guides  Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides.  The user guides available are:  The reference guides are:  The remaining guides are:  This guide provides guidance for Apache Isis' own committers. ","description":" Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides. ","id":21857601},"23125949":{"title":"Edit
 ing","url":"guides/dg/dg.html#__dg_ide_intellij_hints-and-tips_editing","body":"Editing ","description":"","id":23125949},"23524101":{"title":"Collections","url":"guides/ugvw/ugvw.html#_collections","body":"Collections  In the final row the collections are placed in tabs, simply one collection per tab. This corresponds to the following XML:  As with properties, actions can be associated with collections; this indicates that they should be rendered in the collection’s header. ","description":" In the final row the collections are placed in tabs, simply one collection per tab. This corresponds to the following XML: ","id":23524101},"26509816":{"title":"Commit changes","url":"guides/cgcom/cgcom.html#__cgcom_cutting-a-release_releasing-core_commit-changes","body":"Commit changes  Commit any changes from the preceding steps: ","description":" Commit any changes from the preceding steps: ","id":26509816},"27806498":{"title":"renderedAsDayBefore()","url":"guides/rgant/rgant.html#_rgant-P
 arameterLayout_renderedAsDayBefore","body":"renderedAsDayBefore()  The renderedAsDayBefore() attribute applies only to date parameters whereby the date will be rendered as the day before the value actually held in the domain object. It is ignored for parameters of other types. This attribute is also supported for properties.  This behaviour might at first glance appear odd, but the rationale is to support the use case of a sequence of instances that represent adjacent intervals of time. In such cases there would typically be startDate and endDate properties, eg for all of Q2. Storing this as a half-closed interval — eg [1-Apr-2015, 1-July-2015) — can substantially simplify internal algorithms; the endDate of one interval will correspond to the startDate of the next.  However, from an end-user perspective the requirement may be to render the interval as a fully closed interval; eg the end date should be shown as 30-Jun-2015.  This attribute therefore bridges the gap; it presents 
 the information in a way that makes sense to an end-user, but also stores the domain object in a way that is easy work with internally.  For example: ","description":" The renderedAsDayBefore() attribute applies only to date parameters whereby the date will be rendered as the day before the value actually held in the domain object. It is ignored for parameters of other types. This attribute is also supported for properties. ","id":27806498},"31857620":{"title":"Interacting with the services","url":"guides/rgsvc/rgsvc.html#_interacting_with_the_services","body":"Interacting with the services  Typically domain objects will have little need to interact with the CommandContext and Command directly; what is more useful is that these are persisted in support of the various use cases identified above.  One case however where a domain object might want to obtain the Command is to determine whether it has been invoked in the foreground, or in the background. It can do this using the getExecu
 tedIn() method:  Although not often needed, this then allows the domain object to access the Command object through the CommandContext service. To expand th above example:  If run in the background, it might then notify the user (eg by email) if all work is done.  This leads us onto a related point, distinguishing the current effective user vs the originating \"real\" user. When running in the foreground, the current user can be obtained from the UserService, using:  If running in the background, however, then the current user will be the credentials of the background process, for example as run by a Quartz scheduler job.  The domain object can still obtain the original (\"effective\") user that caused the job to be created, using: ","description":" Typically domain objects will have little need to interact with the CommandContext and Command directly; what is more useful is that these are persisted in support of the various use cases identified above. ","id":31857620},"36734123":{"
 title":"Bug","url":"release-notes/release-notes.html#_bug_8","body":"Bug ","description":"","id":36734123},"39248326":{"title":"Runtime vs Noop implementation","url":"guides/rgfis/rgfis.html#_runtime_vs_noop_implementation","body":"Runtime vs Noop implementation  The framework provides two implementations:  The …​Default implementation takes priority over the …​Noop implementation. ","description":" The framework provides two implementations: ","id":39248326},"39290887":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_implementation_22","body":"Implementation  The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.container.DomainObjectContainerDefault). ","description":" The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.container.DomainObjectContainerDefault). ","id":39290887},"42240053":{"title":"Screenshots","url":"guides/ugvw/ugvw.html#_screenshots_9","body":"Screensho
 ts  The screenshot below shows the Isis addons example todoapp (not ASF) with a 'brand logo' image in its header:  A custom brand logo (typically larger) can also be specified for the signin page: ","description":" The screenshot below shows the Isis addons example todoapp (not ASF) with a 'brand logo' image in its header: ","id":42240053},"44483327":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_17","body":"New Feature ","description":"","id":44483327},"45128293":{"title":"getConfigurationProperties()","url":"guides/rgcms/rgcms.html#__rgcms_classes_AppManifest-bootstrapping_api_getConfigurationProperties","body":"getConfigurationProperties()  This method allow arbitrary other configuration properties to be overridden. One common use case is in conjunction with the getFixtures() method, discussed above: ","description":" This method allow arbitrary other configuration properties to be overridden. One common use case is in conjunction with the getFixtures
 () method, discussed above: ","id":45128293},"57327287":{"title":"cssClassFa()","url":"guides/rgant/rgant.html#_rgant-ViewModelLayout_cssClassFa","body":"cssClassFa()  The cssClassFa() attribute is used to specify the name of a Font Awesome icon name, to be rendered as the domain object’s icon.  These attribute can also be applied to domain objects to specify the object’s icon, and to actions to specify an icon for the action’s representation as a button or menu item.  If necessary the icon specified can be overridden by a particular object instance using the iconName() method.  For example:  There can be multiple \"fa-\" classes, eg to mirror or rotate the icon. There is no need to include the mandatory fa \"marker\" CSS class; it will be automatically added to the list. The fa- prefix can also be omitted from the class names; it will be prepended to each if required.  The related cssClassFaPosition() attribute is currently unused for domain objects; the icon is always render
 ed to the left. ","description":" The cssClassFa() attribute is used to specify the name of a Font Awesome icon name, to be rendered as the domain object’s icon. ","id":57327287},"64932464":{"title":"Other Guides","url":"guides/ugtst/ugtst.html#_other_guides","body":"Other Guides  Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides.  The user guides available are:  The reference guides are:  The remaining guides are: ","description":" Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides. ","id":64932464},"66604001":{"title":"@Programmatic","url":"guides/rgant/rgant.html#_rgant-Programmatic","body":"@Programmatic ","description":"","id":66604001},"68441589":{"title":"License headers","url":"guides/cgcom/cgcom.html#__cgcom_cutting-a-release_releasing-core_license-headers","body":"License headers  The Apache Release Audit Tool RAT (from the Apache Creadur project) checks
  for missing license header files. The parent pom.xml of each releasable module specifies the RAT Maven plugin, with a number of custom exclusions.  To run the RAT tool, use:  where rat.numUnapprovedLicenses property is set to a high figure, temporarily overriding the default value of 0. This will allow the command to run over all submodules, rather than failing after the first one. The command writes out a target\\rat.txt for each submodule. missing license notes are indicated using the key !???. The for command collates all the errors.  Investigate and fix any reported violations, typically by either:  To add missing headers, use the groovy script addmissinglicenses.groovy (in the scripts directory) to automatically insert missing headers for certain file types. The actual files checked are those with extensions specified in the line def fileEndings = [\".java\", \".htm\"]:  (If the -x is omitted then the script is run in \"dry run\" mode). Once you’ve fixed all issues, confirm 
 once more that apache-rat-plugin no longer reports any license violations, this time leaving the rat.numUnapprovedLicenses property to its default, 0: ","description":" The Apache Release Audit Tool RAT (from the Apache Creadur project) checks for missing license header files. The parent pom.xml of each releasable module specifies the RAT Maven plugin, with a number of custom exclusions. ","id":68441589},"73703450":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_29","body":"New Feature ","description":"","id":73703450},"75054401":{"title":"Supporting Method Prefixes","url":"guides/rgcms/rgcms.html#_rgcms_methods_prefixes","body":"Supporting Method Prefixes  Supporting methods are those that are associated with properties, collections and actions, providing additional imperative business rule checking and behaviour to be performed when the user interacts with those object members.  This association is performed by name matching. Thus, a property called \"f
 irstName\", derived from a method getFirstName() may have supporting methods hideFirstName(), disableFirstName() and validateFirstName(). Supporting methods are, therefore, each characterized by their own particular prefix.  The table below lists the method prefixes that are recognized as part of Apache Isis' default programming model. ","description":" Supporting methods are those that are associated with properties, collections and actions, providing additional imperative business rule checking and behaviour to be performed when the user interacts with those object members. ","id":75054401},"77231561":{"title":"Interaction Execution","url":"guides/rgcms/rgcms.html#_rgcms_schema-ixn","body":"Interaction Execution  The interaction (\"ixn\") schema defines the serialized form of an action invocation or a property edit. In fact, it actually defines a call-graph of such executions for those cases where the WrapperFactory is used to execute sub-actions/property edits.  Each execution id
 entifies the target object, the member to invoke, and the arguments. It also captures metrics about the execution, and the result of the execution (eg return value of an action invocation). ","description":" The interaction (\"ixn\") schema defines the serialized form of an action invocation or a property edit. In fact, it actually defines a call-graph of such executions for those cases where the WrapperFactory is used to execute sub-actions/property edits. ","id":77231561},"78112488":{"title":"Screencast","url":"guides/ugvw/ugvw.html#_screencast","body":"Screencast  This screencast describes the feature. ","description":" This screencast describes the feature. ","id":78112488},"78624086":{"title":"Other Guides","url":"guides/ugsec/ugsec.html#_other_guides","body":"Other Guides  Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides.  The user guides available are:  The reference guides are:  The remaining guides are: ","descrip
 tion":" Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides. ","id":78624086},"80534397":{"title":"ContentMappingService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_ContentMappingService","body":"ContentMappingService  The ContentMappingService supports the (default implementation of the) ContentNegotiationService enabling the RestfulObjects viewer to represent domain objects in some other format as specified by the HTTP Accept header.  See ContentNegotiationService for further discussion. ","description":" The ContentMappingService supports the (default implementation of the) ContentNegotiationService enabling the RestfulObjects viewer to represent domain objects in some other format as specified by the HTTP Accept header. ","id":80534397},"83803344":{"title":"MessageService","url":"guides/rgsvc/rgsvc.html#_rgsvc_application-layer-api_MessageService","body":"MessageService  The MessageService allows domain 
 objects to raise information, warning or error messages. These messages can either be simple strings, or can be translated. ","description":" The MessageService allows domain objects to raise information, warning or error messages. These messages can either be simple strings, or can be translated. ","id":83803344},"83933647":{"title":"Persistence Concerns","url":"guides/ugbtb/ugbtb.html#_persistence_concerns","body":"Persistence Concerns ","description":"","id":83933647},"85931482":{"title":"Task","url":"release-notes/release-notes.html#_task_24","body":"Task ","description":"","id":85931482},"87271564":{"title":"2004:","url":"pages/articles-and-presentations/articles-and-presentations.html#_2004","body":"2004: ","description":"","id":87271564},"90561824":{"title":"Wicket Viewer","url":"release-notes/release-notes.html#_wicket_viewer_8","body":"Wicket Viewer ","description":"","id":90561824},"90935214":{"title":"Wicket Viewer","url":"release-notes/release-notes.html#_wicket_viewer_1
 0","body":"Wicket Viewer ","description":"","id":90935214},"91902412":{"title":"The issue in more detail","url":"guides/ugodn/ugodn.html#_the_issue_in_more_detail","body":"The issue in more detail  Consider these entities (yuml.me/b8681268):  In the course of a transaction, the Agreement entity is loaded into memory (not necessarily modified), and then new AgreementRoles are associated to it.  All these entities implement Comparable using ObjectContracts, and the implementation of AgreementRole's (simplified) is:  while Agreement's is implemented as:  and Party's is similarly implemented as:  DataNucleus’s persistence-by-reachability algorithm adds the AgreementRole instances into a SortedSet, which causes AgreementRole#compareTo() to fire:  In other words, in figuring out whether AgreementRole requires the persistence-by-reachability algorithm to run, it causes the adjacent associated entity Party to also be retrieved. ","description":" Consider these entities (yuml.me/b8681268):
  ","id":91902412},"92467660":{"title":"API and Usage","url":"guides/ugtst/ugtst.html#_ugtst_fixture-scripts_api-and-usage","body":"API and Usage  There are two parts to using fixture scripts: the FixtureScripts domain service class, and the FixtureScript view model class:  Let’s look at FixtureScripts domain service in more detail first. ","description":" There are two parts to using fixture scripts: the FixtureScripts domain service class, and the FixtureScript view model class: ","id":92467660},"95725933":{"title":"Appendix: Isis Add-ons (not ASF)","url":"guides/ugvw/ugvw.html#_ugvw_isis-addons","body":"Appendix: Isis Add-ons (not ASF) ","description":"","id":95725933},"96583162":{"title":"Configure toolchains plugin","url":"guides/cgcom/cgcom.html#_configure_toolchains_plugin","body":"Configure toolchains plugin  Apache Isis releases are built using Java 7, enforced using the maven toolchains plugin. Ensure that Java 7 is installed and the toolchains plugin is configured, as de
 scribed in the contributors' guide. ","description":" Apache Isis releases are built using Java 7, enforced using the maven toolchains plugin. Ensure that Java 7 is installed and the toolchains plugin is configured, as described in the contributors' guide. ","id":96583162},"99090360":{"title":"Running the App","url":"guides/ugfun/ugfun.html#__ugfun_getting-started_simpleapp-archetype_running-the-app","body":"Running the App  The simpleapp archetype generates a single WAR file, configured to run both the Wicket viewer and the Restful Objects viewer. The archetype also configures the DataNucleus/JDO Objectstore to use an in-memory HSQLDB connection.  Once you’ve built the app, you can run the WAR in a variety of ways. ","description":" The simpleapp archetype generates a single WAR file, configured to run both the Wicket viewer and the Restful Objects viewer. The archetype also configures the DataNucleus/JDO Objectstore to use an in-memory HSQLDB connection. ","id":99090360},"100682
 258":{"title":"Update dependencies","url":"guides/cgcom/cgcom.html#_update_dependencies","body":"Update dependencies  With the release complete, now is a good time to bump versions of dependencies (so that there is a full release cycle to identify any possible issues).  You will probably want to create a new JIRA ticket for these updates (or if minor then use the \"catch-all\" JIRA ticket raised earlier for the next release). ","description":" With the release complete, now is a good time to bump versions of dependencies (so that there is a full release cycle to identify any possible issues). ","id":100682258},"102347041":{"title":"Bug","url":"release-notes/release-notes.html#_bug_10","body":"Bug ","description":"","id":102347041},"104167755":{"title":"How to implement a spellchecker?","url":"guides/ugbtb/ugbtb.html#_ugbtb_hints-and-tips_how-to-implement-a-spellchecker","body":"How to implement a spellchecker?  From this thread on the Apache Isis users mailing list:  One way to impl
 ement is to use the event bus:  if if the change is made through an edit, you can use @Property#domainEvent().  You’ll need some way to know which fields should be spell checked. Two ways spring to mind:  And you’ll (obviously) also need some sort of spell checker implementation to call. ","description":" From this thread on the Apache Isis users mailing list: ","id":104167755},"105480253":{"title":"Visitor","url":"guides/ugbtb/ugbtb.html#__code_visitor_code","body":"Visitor  More often than not, you’ll want to visit every element in the metamodel, and so for this you can instead subclass from MetaModelValidatorVisiting.Visitor:  You can then create your custom validator by subclassing MetaModelValidatorComposite and adding the visiting validator:  If you have more than one rule then each can live in its own visitor. ","description":" More often than not, you’ll want to visit every element in the metamodel, and so for this you can instead subclass from MetaModelValidatorVisi
 ting.Visitor: ","id":105480253},"106558909":{"title":"contributedAs()","url":"guides/rgant/rgant.html#_rgant-ActionLayout_contributedAs","body":"contributedAs()  For a domain service action that can be contributed, the contributedAs() attribute determines how it is contributed: as an action or as an association (ie a property or collection).  The distinction between property or collection is automatic: if the action returns a java.util.Collection (or subtype) then the action is contributed as a collection; otherwise it is contributed as a property.  For a domain service action to be contributed, the domain services must have a nature nature of either VIEW or VIEW_CONTRIBUTIONS_ONLY, and the action must have safe action semantics, and takes a single argument, namely the contributee domain object.  For example:  It’s also possible to use the attribute to suppress the action completely:  In such cases, though, it would probably make more sense to annotate the action as either hidden 
 or indeed @Programmatic. ","description":" For a domain service action that can be contributed, the contributedAs() attribute determines how it is contributed: as an action or as an association (ie a property or collection). ","id":106558909},"106606865":{"title":"Using the Wicket Viewer","url":"guides/rgcfg/rgcfg.html#_using_the_wicket_viewer","body":"Using the Wicket Viewer  Most of the you’re likely to run Apache Isis using the Wicket viewer. In this case Apache Isis' \"deployment type\" concept maps to Wicket’s \"configuration\" concept:  Wicket’s mechanism for specifying the \"configuration\" is to use a context parameter in web.xml; Apache Isis automatically infers its own deployment type from this. In other words: ","description":" Most of the you’re likely to run Apache Isis using the Wicket viewer. In this case Apache Isis' \"deployment type\" concept maps to Wicket’s \"configuration\" concept: ","id":106606865},"108721033":{"title":"Incode Catalog","url":"guides/
 ugfun/ugfun.html#_ugfun_available-domain-services_incode-catalog","body":"Incode Catalog  The Incode Catalog website also provides a number of reusable modules, focusing on business logic for generic subdomains.  This section surveys the functionality available.  The modules themselves fall into a number of broader groups:  Each of the modules has a full README and demo application demonstrating their usage. The sections below briefly outline the capabilities of these modules. ","description":" The Incode Catalog website also provides a number of reusable modules, focusing on business logic for generic subdomains. ","id":108721033},"108815435":{"title":"unchanging()","url":"guides/rgant/rgant.html#_rgant-PropertyLayout_unchanging","body":"unchanging()  The unchanging() attribute is used to indicate that the value held by the property never changes over time, even when other properties of the object do change.  Setting this attribute to true is used as a hint to the viewer to not red
 raw the property after an AJAX update of some other property/ies of the object have changed. This is primarily for performance, eg can improve the user experience when rendering PDFs/blobs.  Note that for this to work, the viewer will also ensure that none of the property’s parent component (such as a tab group panel) are re-rendered.  For example: ","description":" The unchanging() attribute is used to indicate that the value held by the property never changes over time, even when other properties of the object do change. ","id":108815435},"109833874":{"title":"Persistable","url":"guides/rgcms/rgcms.html#_rgcms_classes_mixins_Persistable","body":"Persistable  All domain entities automatically implement the DataNucleus Persistable role interface as a result of the enhancer process (the fully qualified class name is org.datanucleus.enhancement.Persistable). So as a developer you do not need to write any code to obtain the mixins that contribute to this interface. ","description":" 
 All domain entities automatically implement the DataNucleus Persistable role interface as a result of the enhancer process (the fully qualified class name is org.datanucleus.enhancement.Persistable). So as a developer you do not need to write any code to obtain the mixins that contribute to this interface. ","id":109833874},"112375674":{"title":"Auditing","url":"migration-notes/migration-notes.html#_auditing","body":"Auditing  The AuditingService SPI service has been deprecated, instead replaced by the AuditerService.  There can be more than one implementation of this new SPI, and a framework-provided implementation (AuditerServiceLogging) will log to a file. The (non-ASF) Isis addons' audit module also implements the new SPI. ","description":" The AuditingService SPI service has been deprecated, instead replaced by the AuditerService. ","id":112375674},"114685873":{"title":"Usage","url":"guides/rgsvc/rgsvc.html#_usage_19","body":"Usage  To indicate that an action invocation should 
 be published, annotate it with the @Action#publishing() annotation.  To indicate that an property edit should be published, annotate it with the @Property#publishing() annotation.  To indicate that a changed object should be published is to annotate it with the @DomainObject#publishing() annotation. ","description":" To indicate that an action invocation should be published, annotate it with the @Action#publishing() annotation. ","id":114685873},"115229271":{"title":"Domain Entities","url":"guides/ugfun/ugfun.html#_ugfun_programming-model_domain-entities","body":"Domain Entities  Entities are persistent domain objects, with their persistence handled by JDO/DataNucleus. As such, they are mapped to a persistent object store, typically an RDBMS, with DataNucleus taking care of both lazy loading and also the persisting of modified (\"dirty\") objects.  Domain entities are generally decorated with both DataNucleus and Apache Isis annotations. Let’s look at some of the most commonly-use
 d annotations.  To start with, entities are flagged as being \"persistence capable\", indicating how JDO/DataNucleus should manage their identity:  All domain entities will have some sort of mandatory key properties. The example below is a very simple case, where the entity is identified by a name property:  It’s also common for domain entities to have queries annotated on them. These are used by repository domain services to query for instances of the entity:  DataNucleus provides several APIs for defining queries, including entirely programmatic and type-safe APIs; but JDOQL is very similar to SQL and so easily learnt.  The corresponding repository method for the above query is: ","description":" Entities are persistent domain objects, with their persistence handled by JDO/DataNucleus. As such, they are mapped to a persistent object store, typically an RDBMS, with DataNucleus taking care of both lazy loading and also the persisting of modified (\"dirty\") objects. ","id":1152292
 71},"117553409":{"title":"Object Icon","url":"guides/ugfun/ugfun.html#_object_icon","body":"Object Icon  The icon is often the same for all instances of a particular class, and is picked up by convention.  It’s is also possible for an individual instance to return a custom icon, typically so that some significant state of that domain object is represented. For example, a custom icon could be used to represent a shipped order, say, or an overdue library loan. ","description":" The icon is often the same for all instances of a particular class, and is picked up by convention. ","id":117553409},"121574190":{"title":"Related Services","url":"guides/rgsvc/rgsvc.html#_related_services_18","body":"Related Services  The ActionInteractionContext service allows bulk actions to co-ordinate with each other.  The QueryResultsCache is useful for caching the results of expensive method calls. ","description":" The ActionInteractionContext service allows bulk actions to co-ordinate with each othe
 r. ","id":121574190},"121879267":{"title":"Wicket Viewer","url":"release-notes/release-notes.html#_wicket_viewer_2","body":"Wicket Viewer ","description":"","id":121879267},"122762699":{"title":"Contributee","url":"guides/rgcms/rgcms.html#_rgcms_classes_contributee","body":"Contributee  The interfaces listed in this chapter act as contributees; they allow domain services to contribute actions/properties/collections to any domain objects that implement these interfaces. ","description":" The interfaces listed in this chapter act as contributees; they allow domain services to contribute actions/properties/collections to any domain objects that implement these interfaces. ","id":122762699},"125299345":{"title":"Example","url":"guides/rgant/rgant.html#_example_2","body":"Example  This example is taken from the (non-ASF) Isis addons' todoapp: ","description":" This example is taken from the (non-ASF) Isis addons' todoapp: ","id":125299345},"125961908":{"title":"Do it!","url":"pages/tg/tg
 .html#_do_it","body":"Do it! ","description":"","id":125961908},"134804772":{"title":"How to handle void/null results","url":"guides/ugbtb/ugbtb.html#_ugbtb_hints-and-tips_how-to-handle-void-and-null-results","body":"How to handle void/null results  From this thread on the Apache Isis users mailing list:  One way to implement this idea is to provide a custom implementation of the RoutingService SPI domain service. The default implementation will either return the current object (if not null), else the home page (as defined by @HomePage) if one exists.  The following custom implementation refines this to use the breadcrumbs (available in the Wicket viewer) to return the first non-deleted domain object found in the list of breadcrumbs:  Note that the above implementation uses Java 8, so if you are using Java 7 then you’ll need to backport accordingly. ","description":" From this thread on the Apache Isis users mailing list: ","id":134804772},"140760147":{"title":"Isis Add-on modules
 ","url":"guides/ugvw/ugvw.html#_isis_add_on_modules","body":"Isis Add-on modules  Some of the (non-ASF) Isis Addons modules also provide services whose actions appear in top-level menus.  The security's module places its domain service menus in three top-level menus:  Meanwhile the devutils module places its actions - to download layouts and so forth - on a \"Prototyping\" top-level menu, on the SECONDARY menu bar.  Currently there is no facility to alter the placement of these services. However, their UI can be suppressed using security or using a vetoing subscriber. ","description":" Some of the (non-ASF) Isis Addons modules also provide services whose actions appear in top-level menus. ","id":140760147},"145340696":{"title":"Registering the Services","url":"guides/rgsvc/rgsvc.html#_registering_the_services_20","body":"Registering the Services  The (non-ASF) Isis addons' audit module provides an implementation of this service (AuditingService), and also provides a number of relate
 d domain services (AuditingServiceMenu, AuditingServiceRepository and AuditingServiceContributions).  Assuming that an AppManifest is being used to bootstrap the app) then this can be activated by updating the pom.xml and updating the AppManifest#getModules() method.  If menu items or contributions are not required in the UI, these can be suppressed either using security or by implementing a vetoing subscriber. ","description":" The (non-ASF) Isis addons' audit module provides an implementation of this service (AuditingService), and also provides a number of related domain services (AuditingServiceMenu, AuditingServiceRepository and AuditingServiceContributions). ","id":145340696},"148135206":{"title":"Layout Metadata Reader (deprecated)","url":"guides/ugbtb/ugbtb.html#_ugbtb_programming-model_layout-metadata-reader","body":"Layout Metadata Reader (deprecated)  The metadata for domain objects is obtained both annotations and files. There is also deprecated support for reading layout
 s from .layout.json files. This service provides an SPI (and default implementation) for reading layouts defined in this fashion. ","description":" The metadata for domain objects is obtained both annotations and files. There is also deprecated support for reading layouts from .layout.json files. This service provides an SPI (and default implementation) for reading layouts defined in this fashion. ","id":148135206},"153666205":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_implementation_17","body":"Implementation  The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.title.TitleServiceDefault). ","description":" The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.title.TitleServiceDefault). ","id":153666205},"155655500":{"title":"@PrimaryKey (javax.jdo)","url":"guides/rgant/rgant.html#_rgant-PrimaryKey","body":"@PrimaryKey (javax.jdo) ","description":"","id":155655500},"15803341
 2":{"title":"SPI","url":"guides/rgsvc/rgsvc.html#_spi_27","body":"SPI  The SPI defined by the service is: ","description":" The SPI defined by the service is: ","id":158033412},"158069558":{"title":"Usability: Defaults","url":"pages/tg/tg.html#_usability_defaults","body":"Usability: Defaults  Quick detour: often we want to set up defaults to go with choices. Sensible defaults for action parameters can really improve the usability of the app. ","description":" Quick detour: often we want to set up defaults to go with choices. Sensible defaults for action parameters can really improve the usability of the app. ","id":158069558},"158897592":{"title":"Refactoring","url":"guides/dg/dg.html#__dg_ide_intellij_hints-and-tips_refactoring","body":"Refactoring  Loads of good stuff on the Refactor menu; most used are:  If you can’t remember all those shortcuts, just use ctrl-shift-alt-T (might want to rebind that to something else!) and get a context-sensitive list of refactorings available f
 or the currently selected object ","description":" Loads of good stuff on the Refactor menu; most used are: ","id":158897592},"159072030":{"title":"(non-ASF) Incode Platform","url":"migration-notes/migration-notes.html#_migration-notes_1.14.0-to-1.15.0_incode-platform","body":"(non-ASF) Incode Platform  (work in progress) The supporting (non-ASF) Isis Addons and Incode Catalog have also been reorganised into a single \"Incode Platform\".  While each module can still be consumed individually, the new platform versions consistently (a change in any one module will result in a re-release of all). This should make these modules easier to consume, and easier to maintain/develop.  All the modules remain open source, still licensed under the ASF v2.0 license.  As of this release, none of the groupIds or artifactIds have changed. They will be rationalized/made consistent in a future release; most probably to coincide with v2.0.0 of the framework. ","description":" (work in progress) The sup
 porting (non-ASF) Isis Addons and Incode Catalog have also been reorganised into a single \"Incode Platform\". ","id":159072030},"160872749":{"title":"Related Services","url":"guides/rgfis/rgfis.html#_related_services","body":"Related Services  The default implementation of ContentNegotiationService delegates to ContentMappingService (if present) to convert domain entities into a stable form (eg DTO).  The ContentNegotiationService is itself called by the (default implementation of) RepresentationService. ","description":" The default implementation of ContentNegotiationService delegates to ContentMappingService (if present) to convert domain entities into a stable form (eg DTO). ","id":160872749},"163456888":{"title":"Dependency upgrade","url":"release-notes/release-notes.html#_dependency_upgrade_9","body":"Dependency upgrade ","description":"","id":163456888},"163915714":{"title":"web.xml","url":"migration-notes/migration-notes.html#_web_xml","body":"web.xml  In the web.xml, the \
 "isis.viewers\" context-param is now ignored. Instead the viewer_wicket.properties and viewer_restfulobjects.properties will both be loaded if present (but neither need be present). ","description":" In the web.xml, the \"isis.viewers\" context-param is now ignored. Instead the viewer_wicket.properties and viewer_restfulobjects.properties will both be loaded if present (but neither need be present). ","id":163915714},"165602306":{"title":"GridLoaderService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_GridLoaderService","body":"GridLoaderService  The GridLoaderService provides the ability to load the XML layout (grid) for a domain class. ","description":" The GridLoaderService provides the ability to load the XML layout (grid) for a domain class. ","id":165602306},"165750333":{"title":"loaded()","url":"guides/rgcms/rgcms.html#_rgcms_methods_lifecycle_loaded","body":"loaded()  The loaded() lifecycle callback method is called when a (persistent) object has just been lo
 aded from the object store. ","description":" The loaded() lifecycle callback method is called when a (persistent) object has just been loaded from the object store. ","id":165750333},"166045728":{"title":"Sanity Check","url":"guides/cgcom/cgcom.html#_sanity_check_2","body":"Sanity Check  Ensure that the framework builds ok using the same command that your CI server is set up to execute (see section above). ","description":" Ensure that the framework builds ok using the same command that your CI server is set up to execute (see section above). ","id":166045728},"166899251":{"title":"Installing and Setting up","url":"guides/dg/dg.html#__dg_ide_intellij_installing","body":"Installing and Setting up  This section covers installation and setup. These notes/screenshots were prepared using IntelliJ Community Edition 14.1.x, but are believed to be compatible with more recent versions/other editions of the IDE. ","description":" This section covers installation and setup. These notes/screen
 shots were prepared using IntelliJ Community Edition 14.1.x, but are believed to be compatible with more recent versions/other editions of the IDE. ","id":166899251},"167039338":{"title":"Task","url":"release-notes/release-notes.html#_task_14","body":"Task ","description":"","id":167039338},"169081251":{"title":"Interaction","url":"guides/rgsvc/rgsvc.html#__code_interaction_code","body":"Interaction  The public API of the Interaction class consists of:  This class is concrete (is also the implementation). ","description":" The public API of the Interaction class consists of: ","id":169081251},"174738887":{"title":"Related functionality","url":"guides/ugvw/ugvw.html#_related_functionality_2","body":"Related functionality  The Recent Pages also lists recently visited pages, selected from a drop-down. ","description":" The Recent Pages also lists recently visited pages, selected from a drop-down. ","id":174738887},"175028546":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_im
 plementation_5","body":"Implementation  The framework provides a default implementation of this service, namely GridServiceDefault. ","description":" The framework provides a default implementation of this service, namely GridServiceDefault. ","id":175028546},"175197970":{"title":"Performance tuning","url":"pages/tg/tg.html#_performance_tuning","body":"Performance tuning  The QueryResultsCache (request-scoped) domain service allows arbitrary objects to be cached for the duration of a request.  This can be helpful for \"naive\" code which would normally make the same query within a loop. ","description":" The QueryResultsCache (request-scoped) domain service allows arbitrary objects to be cached for the duration of a request. ","id":175197970},"175636232":{"title":"RepositoryService","url":"guides/rgsvc/rgsvc.html#_rgsvc_persistence-layer-api_RepositoryService","body":"RepositoryService  The RepositoryService collects together methods for creating, persisting and searching for entiti
 es from the underlying persistence store. It acts as an abstraction over the JDO/DataNucleus objectstore.  You can use it during prototyping to write naive queries (find all rows, then filter using the Guava Predicate API, or you can use it to call JDO named queries using JDOQL.  As an alternative, you could also use JDO typesafe queries through the IsisJdoSupport service. ","description":" The RepositoryService collects together methods for creating, persisting and searching for entities from the underlying persistence store. It acts as an abstraction over the JDO/DataNucleus objectstore. ","id":175636232},"176767338":{"title":"Command and Events","url":"guides/rgsvc/rgsvc.html#__rgsvc_intro_commands-and-events","body":"Command and Events  A good number of the domain services manage the execution of action invocations/property edits, along with the state of domain objects that are modified as a result of these. These services capture information which can then be used for various p
 urposes, most notably for auditing or for publishing events, or for deferring execution such that the execution be performed in the background at some later date.  The diagram below shows how these services fit together. The outline boxes are services while the coloured boxes represent data structures - defined in the applib and therefore accessible to domain applications - which hold various information about the executions.  To explain:  Implementations of CommandService can use the Command#getMemento() method to obtain a XML equivalent of that Command, reified using the cmd.xsd schema. This can be converted back into a CommandDto using the CommandDtoUtils utility class (part of the applib).  Similarly, implementations of PublisherService can use the InteractionDtoUtils utility class to obtain a InteractionDto representing the interaction, either just for a single execution or for the entire call-graph. This can be converted into XML in a similar fashion.  Likewise, the PublishedO
 bjects class passed to the PublisherService at the end of the interaction provides the PublishedObjects#getDto() method which returns a ChangesDto instance. This can be converted into XML using the ChangesDtoUtils utility class.  One final point: multiple PublisherService implementations are supported because different implementations may have different responsibilities. For example, the (non-ASF) Isis addons' publishmq module is responsible for publishing messages onto an ActiveMQ event bus, for inter-system communication. However, the SPI can also be used for profiling; each execution within the call-graph contains metrics of the number of objects loaded or modified as a result of that execution, and thus could be used for application profiling. The framework provides a default PublisherServiceLogging implementation that logs this using SLF4J. ","description":" A good number of the domain services manage the execution of action invocations/property edits, along with the state of d
 omain objects that are modified as a result of these. These services capture information which can then be used for various purposes, most notably for auditing or for publishing events","id":176767338},"178125062":{"title":"domainEvent()","url":"guides/rgant/rgant.html#_rgant-Action_domainEvent","body":"domainEvent()  Whenever a domain object (or list of domain objects) is to be rendered, the framework fires off multiple domain events for every property, collection and action of the domain object. In the cases of the domain object’s actions, the events that are fired are:  Subscribers subscribe through the EventBusService using either Guava or Axon Framework annotations and can influence each of these phases.  By default the event raised is ActionDomainEvent.Default. For example:  The domainEvent() attribute allows a custom subclass to be emitted allowing more precise subscriptions (to those subclasses) to be defined instead. This attribute is also supported for collections and pr
 operties.  For example:  The benefit is that subscribers can be more targeted as to the events that they subscribe to. ","description":" Whenever a domain object (or list of domain objects) is to be rendered, the framework fires off multiple domain events for every property, collection and action of the domain object. In the cases of the domain object’s actions, the events that are fired are: ","id":178125062},"180783343":{"title":"TranslatableException","url":"guides/ugbtb/ugbtb.html#__code_translatableexception_code","body":"TranslatableException  Another mechanism by which messages can be rendered to the user are as the result of exception messages thrown and recognized by an ExceptionRecognizer.  In this case, if the exception implements TranslatableException, then the message will automatically be translated before being rendered. The TranslatableException itself takes the form: ","description":" Another mechanism by which messages can be rendered to the user are as the resul
 t of exception messages thrown and recognized by an ExceptionRecognizer. ","id":180783343},"183226640":{"title":"updatedLifecycleEvent()","url":"guides/rgant/rgant.html#_rgant-DomainObject_updatedLifecycleEvent","body":"updatedLifecycleEvent()  Whenever a (persistent) domain object has been modified and has been updated in the database, an \"updated\" lifecycle event is fired.  Subscribers subscribe through the EventBusService and can use the event to obtain a reference to the domain object.  By default the event raised is ObjectUpdatedEvent.Default. For example:  The purpose of the updatedLifecycleEvent() attribute is to allows a custom subclass to be emitted instead. A similar attribute is available for other lifecycle events.  For example:  The benefit is that subscribers can be more targeted as to the events that they subscribe to. ","description":" Whenever a (persistent) domain object has been modified and has been updated in the database, an \"updated\" lifecycle event is fir
 ed. ","id":183226640},"188123644":{"title":"2013","url":"pages/articles-and-presentations/articles-and-presentations.html#_2013","body":"2013 ","description":"","id":188123644},"189180810":{"title":"HoldsUpdatedAt","url":"guides/rgcms/rgcms.html#_rgcms_classes_roles_HoldsUpdatedAt","body":"HoldsUpdatedAt  The HoldsUpdatedAt role interface allows the (framework-provided) TimestampService to update each object with the current timestamp whenever it is modified in a transaction.  The interface is defined as:  The current time is obtained from the ClockService.  Entities that implement this interface often also implement HoldsUpdatedBy role interface; as a convenience the Timestampable interface combines the two roles. ","description":" The HoldsUpdatedAt role interface allows the (framework-provided) TimestampService to update each object with the current timestamp whenever it is modified in a transaction. ","id":189180810},"191180113":{"title":"persistence.xml","url":"guides/ugodn/ugo
 dn.html#_ugodn_configuring_persistence-xml","body":"persistence.xml  DataNucleus will for itself also and read the META-INF/persistence.xml. In theory it can hold mappings and even connection strings. However, with Apache Isis we tend to use annotations instead and externalize connection strings. so its definition is extremely simply, specifying just the name of the \"persistence unit\".  Here’s the one provided by the SimpleApp archetype:  Normally all one needs to do is to change the persistence-unit name.  See DataNucleus' documentation on persistence.xml to learn more. ","description":" DataNucleus will for itself also and read the META-INF/persistence.xml. In theory it can hold mappings and even connection strings. However, with Apache Isis we tend to use annotations instead and externalize connection strings. so its definition is extremely simply, specifying just the name of the \"persistence unit","id":191180113},"193237835":{"title":"Core","url":"release-notes/release-note
 s.html#_core_8","body":"Core ","description":"","id":193237835},"193497711":{"title":"UI Hints","url":"guides/ugfun/ugfun.html#_ugfun_ui-hints","body":"UI Hints ","description":"","id":193497711},"194608562":{"title":"SPI","url":"guides/rgsvc/rgsvc.html#_spi_19","body":"SPI  The SPI defined by the service is:  where FixtureScriptsSpecification exposes these values:  The class is immutable but it has a builder (obtained using FixturescriptsSpecification.builder(…​)) for a fluent API. ","description":" The SPI defined by the service is: ","id":194608562},"195374240":{"title":"Update the LDAP committee (if a PMC member)","url":"guides/cgcom/cgcom.html#_update_the_ldap_committee_if_a_pmc_member","body":"Update the LDAP committee (if a PMC member)  (Assuming that the new committer is a PMC member), also add them as to the PMC committee. This takes two steps:  The new committer does not officially become a member of the PMC until the ASF records have been updated. ","description":" (A
 ssuming that the new committer is a PMC member), also add them as to the PMC committee. This takes two steps: ","id":195374240},"195848147":{"title":"ICLA, obtain new account","url":"guides/cgcom/cgcom.html#_icla_obtain_new_account","body":"ICLA, obtain new account  If required (that is, if the committer is not already a committer for a different ASF project), then ask them to complete an ICLA. As a result of this, they should also get an @apache.org user name.  More info can be found in the ASF new committers guide. ","description":" If required (that is, if the committer is not already a committer for a different ASF project), then ask them to complete an ICLA. As a result of this, they should also get an @apache.org user name. ","id":195848147},"196560907":{"title":"XJC profile","url":"guides/rgmvn/rgmvn.html#__rgmvn_xsd_xsd-submodule_xjc-profile","body":"XJC profile  The xjc profile reads the XSD generated by the xsd goal, and from it generates Java DTOs. Note that this isn’t 
 round-tripping: the original view model is only for use within the Isis app, whereas the DTO generated from the XSDs is for use in a standalone context, eg in a Java subscriber on an event bus.  The xjc profile is defined as:  The referenced catalog.xml file instructs the xjc plugin how to resolve referenced schema locations. Only a reference for the Apache Isis common schema is likely to be needed: ","description":" The xjc profile reads the XSD generated by the xsd goal, and from it generates Java DTOs. Note that this isn’t round-tripping: the original view model is only for use within the Isis app, whereas the DTO generated from the XSDs is for use in a standalone context","id":196560907},"198329644":{"title":"Strings (Length)","url":"guides/ugfun/ugfun.html#__ugfun_programming-model_properties_datatypes_strings","body":"Strings (Length)  By default JDO/DataNucleus will map string properties to a VARCHAR(255). To limit the length, use the @Column(length=…​) annotation.  For
  example:  This is a good example of a case where Apache Isis infers domain semantics from the JDO annotation. ","description":" By default JDO/DataNucleus will map string properties to a VARCHAR(255). To limit the length, use the @Column(length=…​) annotation. ","id":198329644},"198382465":{"title":"Actions","url":"pages/tg/tg.html#_actions","body":"Actions  Most business functionality is implemented using actions basically a public method accepting domain classes and primitives as its parameter types. The action can return a domain entity, or a collection of entities, or a primitive/String/value, or void. If a domain entity is returned then that object is rendered immediately; if a collection is returned then the Wicket viewer renders a table. Such collections are sometimes called \"standalone\" collections. ","description":" Most business functionality is implemented using actions basically a public method accepting domain classes and primitives as its parameter types. The ac
 tion can return a domain entity, or a collection of entities, or a primitive/String/value, or void. If a domain entity is returned then that object is rendered","id":198382465},"203208629":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_18","body":"New Feature ","description":"","id":203208629},"203740710":{"title":"RoutingService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_RoutingService","body":"RoutingService  The RoutingService provides the ability to return (and therefore render) an alternative object from an action invocation.  There are two primary use cases:  Currently the routing service is used only by the Wicket viewer; it is ignored by the Restful Objects viewer. ","description":" The RoutingService provides the ability to return (and therefore render) an alternative object from an action invocation. ","id":203740710},"204452611":{"title":"Related services","url":"guides/rgsvc/rgsvc.html#_related_services_15","body":"Related 
 services  The ConfigurationServiceMenu exposes the allConfigurationProperties action in the user interface. ","description":" The ConfigurationServiceMenu exposes the allConfigurationProperties action in the user interface. ","id":204452611},"207811701":{"title":"API","url":"guides/rgsvc/rgsvc.html#_api_2","body":"API  The API of TitleService is: ","description":" The API of TitleService is: ","id":207811701},"209853740":{"title":"To run","url":"guides/rgmvn/rgmvn.html#_to_run","body":"To run  The plugin is activated by default, so is run simply using:  This will run any tests, and then also - because the plugin is activated by the isis-validate property and bound to the test phase, will run the plugin’s validate goal.  If for any reason you want to disable the validation, use: ","description":" The plugin is activated by default, so is run simply using: ","id":209853740},"213642269":{"title":"Moving on","url":"guides/ugfun/ugfun.html#__ugfun_getting-started_helloworld-archetype_m
 oving-on","body":"Moving on  When you are ready to start working on your own app, we don’t recommend building on top of the helloworld app.  Instead, we suggest that you start with the simpleapp archetype instead. Although a little more complex, it provides more structure and tests, all of which will help you as your application grows. ","description":" When you are ready to start working on your own app, we don’t recommend building on top of the helloworld app. ","id":213642269},"216231183":{"title":"Raising a pull request","url":"guides/dg/dg.html#_raising_a_pull_request","body":"Raising a pull request  If you have your own fork, you can now simply push the changes you’ve made locally to your fork:  This will create a corresponding branch in the remote github repo. If you use gitk --all, you’ll also see a remotes/origin/ISIS-123-blobs branch.  Then, use github to raise a pull request. Pull requests sent to the Apache GitHub repositories will forward a pull request e-mail t
 o the dev mailing list. You’ll probably want to sign up to the dev mailing list first before issuing your first pull request (though that isn’t mandatory).  The process to raise the pull request, broadly speaking: ","description":" If you have your own fork, you can now simply push the changes you’ve made locally to your fork: ","id":216231183},"220685197":{"title":"AbstractSubscriber","url":"guides/rgcms/rgcms.html#_rgcms_classes_super_AbstractSubscriber","body":"AbstractSubscriber  This is a convenience superclass for creating subscriber domain services on the EventBusService. It uses @PostConstruct and @PreDestroy callbacks to automatically register/unregister itself with the EventBusService.  It’s important that subscribers register before any domain services that might emit events on the EventBusService. For example, the (non-ASF) Isis addons' security module provides a domain service that automatically seeds certain domain entities; these will generate lifecycle events
  and so any subscribers must be registered before such seed services. The easiest way to do this is to use the @DomainServiceLayout#menuOrder() attribute.  As a convenience, the AbstractSubscriber specifies this attribute. ","description":" This is a convenience superclass for creating subscriber domain services on the EventBusService. It uses @PostConstruct and @PreDestroy callbacks to automatically register/unregister itself with the EventBusService. ","id":220685197},"221961571":{"title":"Release prepare \"dry run\"","url":"guides/cgcom/cgcom.html#__cgcom_cutting-a-release_releasing-core_release-prepare-dry-run","body":"Release prepare \"dry run\"  Most of the work is done using the mvn release:prepare goal. Since this makes a lot of changes, we run it first in \"dry run\" mode; only if that works do we run the goal for real.  Run the dry-run as follows:  You may be prompted for the gpg passphrase. ","description":" Most of the work is done using the mvn release:prepare goal. Sin
 ce this makes a lot of changes, we run it first in \"dry run\" mode; only if that works do we run the goal for real. ","id":221961571},"224301547":{"title":"IsisWebAppBootstrapper","url":"guides/ugbtb/ugbtb.html#__code_isiswebappbootstrapper_code","body":"IsisWebAppBootstrapper  The IsisWebAppBootstrapper servlet context listener bootstraps the shared (global) metadata for the Apache Isis framework. This listener is not required (indeed must not be configured) if the Wicket viewer is in use.  Its definition is:  Its context parameters are: ","description":" The IsisWebAppBootstrapper servlet context listener bootstraps the shared (global) metadata for the Apache Isis framework. This listener is not required (indeed must not be configured) if the Wicket viewer is in use. ","id":224301547},"227377078":{"title":"Initialization","url":"guides/ugfun/ugfun.html#_ugfun_programming-model_domain-services_initialization","body":"Initialization  Services can optionally declare lifecycle callba
 cks to initialize them (when the app is deployed) and to shut them down (when the app is undeployed).  An Apache Isis session is available when initialization occurs (so services can interact with the object store, for example).  The framework will call any public method annotated with @PostConstruct with either no arguments of an argument of type Map<String,String>. In the latter case, the framework passes in the configuration (isis.properties and any other component-specific configuration files).  Shutdown is similar; the framework will call any method annotated with @PreDestroy. ","description":" Services can optionally declare lifecycle callbacks to initialize them (when the app is deployed) and to shut them down (when the app is undeployed). ","id":227377078},"228550183":{"title":"Policies","url":"guides/cgcom/cgcom.html#_cgcom_policies","body":"Policies ","description":"","id":228550183},"229025509":{"title":"Remove references to isis-viewer-wicket parent pom.","url":"migratio
 n-notes/migration-notes.html#_remove_references_to_code_isis_viewer_wicket_code_parent_pom","body":"Remove references to isis-viewer-wicket parent pom.  In earlier releases the Wicket viewer defined its own parent pom.xml for dependency management and its dependencies and to declare the various submodules that make up the viewer. This pom.xml has now been incorporated into the parent pom.xml for the Core framework.  Therefore, in the parent pom.xml of your own domain applications, remove: ","description":" In earlier releases the Wicket viewer defined its own parent pom.xml for dependency management and its dependencies and to declare the various submodules that make up the viewer. This pom.xml has now been incorporated into the parent pom.xml for the Core framework. ","id":229025509},"230599582":{"title":"AuditingServiceInternal","url":"guides/rgfis/rgfis.html#_rgfis_persistence-layer_AuditingServiceInternal","body":"AuditingServiceInternal  The (internal) AuditingServiceInternal d
 omain service acts as an internal facade to any configured AuditingService and AuditerService services. It is responsible for obtaining the details of all changes to domain objects within an interaction, and then to call the configured AuditingService to actually create audit entries of those changes. ","description":" The (internal) AuditingServiceInternal domain service acts as an internal facade to any configured AuditingService and AuditerService services. It is responsible for obtaining the details of all changes to domain objects within an interaction, and then to call the configured AuditingService to actually create audit entries of those changes. ","id":230599582},"232471644":{"title":"Registering Subscribers","url":"guides/rgsvc/rgsvc.html#_registering_subscribers","body":"Registering Subscribers  The register() method should be called in the @PostConstruct lifecycle method. It is valid and probably the least confusing to readers to also \"unregister\" in the @PreDestroy l
 ifecycle method (though as noted above, unregistering is actually a no-op).  For example:  This works for both singleton (application-scoped) and also @RequestScoped domain services. ","description":" The register() method should be called in the @PostConstruct lifecycle method. It is valid and probably the least confusing to readers to also \"unregister\" in the @PreDestroy lifecycle method (though as noted above, unregistering is actually a no-op). ","id":232471644},"235512052":{"title":"Usage","url":"guides/rgsvc/rgsvc.html#_usage_21","body":"Usage  The usage will vary depending upon the conventions of the design. As of 1.9.0, the usage of the service has been centralized such that the packages to be scanned are located from the AppManifest's #getModules() method.  For example, the SimpleApp archetype's app manifest includes:  where the three module classes in effect define three different package prefixes to search under (for domain services, fixture scripts and persistent entit
 ies).  Other usages of the ClassDiscoveryService are likely to work in a similar way, requiring some sort of scope to be specified. ","description":" The usage will vary depending upon the conventions of the design. As of 1.9.0, the usage of the service has been centralized such that the packages to be scanned are located from the AppManifest's #getModules() method. ","id":235512052},"238546442":{"title":"rebuildMetamodel()","url":"guides/rgcms/rgcms.html#__rgcms_classes_mixins_Object_rebuildMetamodel","body":"rebuildMetamodel()  The Object_rebuildMetamodel mixin provides the ability to discard the current internal metamodel data (an instance of ObjectSpecification) for the domain class of the rendered object, and recreate from code and other sources (most notably, layout XML data). It has the following signature: ","description":" The Object_rebuildMetamodel mixin provides the ability to discard the current internal metamodel data (an instance of ObjectSpecification) for the domain
  class of the rendered object, and recreate from code and other sources (most notably, layout XML data). It has the following signature: ","id":238546442},"238979657":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_22","body":"New Feature ","description":"","id":238979657},"240026998":{"title":"Improvement","url":"release-notes/release-notes.html#_improvement_14","body":"Improvement ","description":"","id":240026998},"242030985":{"title":"1.4.0","url":"release-notes/release-notes.html#_release-notes_1.4.0","body":"1.4.0 ","description":"","id":242030985},"243439147":{"title":"hidden()","url":"guides/rgant/rgant.html#_rgant-Property_hidden","body":"hidden()  Properties can be hidden at the domain-level, indicating that they are not visible to the end-user. This attribute can also be applied to actions and collections.  For example:  The acceptable values for the where parameter are:  For example, if a property is annotated with @Title, then normally this s
 hould be hidden from all tables. Annotating with @Property(where=Where.NOWHERE) overrides this. ","description":" Properties can be hidden at the domain-level, indicating that they are not visible to the end-user. This attribute can also be applied to actions and collections. ","id":243439147},"243876171":{"title":"Task","url":"release-notes/release-notes.html#_task_28","body":"Task ","description":"","id":243876171},"244520152":{"title":"SessionLoggingService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_SessionLoggingService","body":"SessionLoggingService  The SessionLoggingService defines an SPI to keep track of (typically: to log) the current sessions that are using the application. ","description":" The SessionLoggingService defines an SPI to keep track of (typically: to log) the current sessions that are using the application. ","id":244520152},"246275568":{"title":"Registering the Services","url":"guides/rgsvc/rgsvc.html#_registering_the_services_4","body":"Re
 gistering the Services  Assuming that the configuration-and-annotation services installer is configured (implicit if using the AppManifest to bootstrap the app), then the default implementation of GridLoaderService is automatically registered and injected, and no further configuration is required.  To use an alternative implementation, use @DomainServiceLayout#menuOrder() (as explained in the introduction to this guide). That said, there should be little reason to use a different implementation; if behaviour does need to be changed, it would also be possible to replace the implementation of either the GridLoaderService or the GridSystemService. ","description":" Assuming that the configuration-and-annotation services installer is configured (implicit if using the AppManifest to bootstrap the app), then the default implementation of GridLoaderService is automatically registered and injected, and no further configuration is required. ","id":246275568},"246409050":{"title":"Using syste
 m properties","url":"guides/ugbtb/ugbtb.html#_using_system_properties","body":"Using system properties  The servlet context initializer will search for any system properties called isis.xxx and if present will use them as overrides.  Thus, an alternative option for a Docker image is to bootstrap the servlet container (Tomcat, Jetty) with appropriate system properties set up. For example, with Tomcat this can be done by writing into the conf/catalina.properties file (see for example this stackoverflow post).  The Docker’s ENTRYPOINT therefore just needs to parse the Docker container’s own command line arguments and use to create this file. ","description":" The servlet context initializer will search for any system properties called isis.xxx and if present will use them as overrides. ","id":246409050},"251015067":{"title":"myapp-dom Module","url":"migration-notes/migration-notes.html#__code_myapp_dom_code_module","body":"myapp-dom Module  In your myapp-dom module (containing defi
 nitions of your persistent entities and domain services), create an empty class to represent the module. This should be at the root package for the domain, eg:  Since there is no requirement to actually instantiate this class (it merely provides the location of the myapp.dom package), we give it a private constructor.  If you have any other modules where you have either domain services or entities, similarly create an empty \"module\" class. ","description":" In your myapp-dom module (containing definitions of your persistent entities and domain services), create an empty class to represent the module. This should be at the root package for the domain, eg: ","id":251015067},"255768608":{"title":"Multi-tenancy support","url":"pages/isis-in-pictures/isis-in-pictures.html#_multi_tenancy_support","body":"Multi-tenancy support  Of the various Isis Addons, the security module has the most features. One significant feature is the ability to associate users and objects with a \"tenancy\". T
 he todoapp uses this feature so that different users' list of todo items are kept separate from one another. A user with administrator is able to switch their own \"tenancy\" to the tenancy of some other user, in order to access the objects in that tenancy:  For more details, see the security module README. ","description":" Of the various Isis Addons, the security module has the most features. One significant feature is the ability to associate users and objects with a \"tenancy\". The todoapp uses this feature so that different users' list of todo items are kept separate from one another. A user with administrator is","id":255768608},"257661017":{"title":"AppManifest (bootstrapping)","url":"guides/rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping","body":"AppManifest (bootstrapping)  This section describes how to implement the AppManifest interface to bootstrap both an Apache Isis web application, and also its integration tests. ","description":" This section describes how
  to implement the AppManifest interface to bootstrap both an Apache Isis web application, and also its integration tests. ","id":257661017},"259358868":{"title":"Hints and Tips","url":"guides/ugodn/ugodn.html#_ugodn_hints-and-tips","body":"Hints and Tips ","description":"","id":259358868},"266250802":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_implementation_2","body":"Implementation  The (non-ASF) Isis addons' kitchensink app provides an example implementation:  which is rendered as: ","description":" The (non-ASF) Isis addons' kitchensink app provides an example implementation: ","id":266250802},"267695496":{"title":"Building Apache Isis","url":"guides/dg/dg.html#_dg_building-isis","body":"Building Apache Isis ","description":"","id":267695496},"273843820":{"title":"Simulated UI (WrapperFactory)","url":"guides/ugtst/ugtst.html#_simulated_ui_code_wrapperfactory_code","body":"Simulated UI (WrapperFactory)  When we talk about integration tests/specs here, we mean tests 
 that exercise the domain object logic, through to the actual database. But we also want the tests to exercise the app from the users’s perspective, which means including the user interface.  For most other frameworks that would require having to test the application in a very heavy weight/fragile fashion using a tool such as Selenium, driving a web browser to navigate . In this regard though, Apache Isis has a significant trick up its sleeve. Because Apache Isis implements the naked objects pattern, it means that the UI is generated automatically from the UI. This therefore allows for other implementations of the UI.  The WrapperFactory domain service allows a test to wrap domain objects and thus to interact with said objects \"as if\" through the UI:  If the test invokes an action that is disabled, then the wrapper will throw an appropriate exception. If the action is ok to invoke, it delegates through.  What this means is that an Isis application can be tested end-to-end without
  having to deploy it onto a webserver; the whole app can be tested while running in-memory. Although integration tests re (necessarily) slower than unit tests, they are not any harder to write (in fact, in some respects they are easier). ","description":" When we talk about integration tests/specs here, we mean tests that exercise the domain object logic, through to the actual database. But we also want the tests to exercise the app from the users’s perspective, which means including the user interface. ","id":273843820},"273985863":{"title":"addTo…​() (deprecated)","url":"guides/rgcms/rgcms.html#_rgcms_methods_prefixes_addTo","body":"addTo…​() (deprecated)  The addTo…​() supporting method is called whenever an object is added to a collection. Its purpose is to allow additional business logic to be performed.  For example:  See also removeFrom…​()` ","description":" The addTo…​() supporting method is called whenever an object is added to a collection. Its purpo
 se is to allow additional business logic to be performed. ","id":273985863},"278859977":{"title":"promptStyle()","url":"guides/rgant/rgant.html#_rgant-PropertyLayout_promptStyle","body":"promptStyle()  The promptStyle() attribute is used to specify whether, when editing a domain object property, the new value for the property is prompted by way of a dialog box, or is prompted using an inline panel (replacing the property on the page).  If the attribute is not set, then the value of the configuration property isis.viewer.wicket.promptStyle is used. If this is itself not set, then an inline prompt is used.  For example:  Alternatively, the promptStyle() can be specified using file-based layouts. ","description":" The promptStyle() attribute is used to specify whether, when editing a domain object property, the new value for the property is prompted by way of a dialog box, or is prompted using an inline panel (replacing the property on the page). ","id":278859977},"278890330":{"title":
 "Build a domain app","url":"pages/tg/tg.html#_build_a_domain_app","body":"Build a domain app  The remainder of the tutorial provides guidance on building a domain application. We don’t mandate any particular design, but we suggest one with no more than 3 to 6 domain entities in the first instance. If you’re stuck for ideas, then how about:  Hopefully one of those ideas appeals or sparks an idea for something of your own. ","description":" The remainder of the tutorial provides guidance on building a domain application. We don’t mandate any particular design, but we suggest one with no more than 3 to 6 domain entities in the first instance. If you’re stuck for ideas, then how about: ","id":278890330},"278999912":{"title":"Integration API","url":"guides/rgsvc/rgsvc.html#_rgsvc_integration-api","body":"Integration API ","description":"","id":278999912},"282766365":{"title":"Object CSS Styling","url":"guides/ugfun/ugfun.html#_object_css_styling","body":"Object CSS Styling  It is
  also possible for an object to return a CSS class. In conjunction with customized CSS this can be used to apply arbitrary styling; for example each object could be rendered in a page with a different background colour. ","description":" It is also possible for an object to return a CSS class. In conjunction with customized CSS this can be used to apply arbitrary styling; for example each object could be rendered in a page with a different background colour. ","id":282766365},"283629224":{"title":"App Structure","url":"guides/ugfun/ugfun.html#_app_structure","body":"App Structure  As noted above, the generated app is a very simple application consisting of a single domain object that can be easily renamed and extended. The intention is not to showcase all of Apache Isis' capabilities; rather it is to allow you to very easily modify the generated application (eg rename SimpleObject to Customer) without having to waste time deleting lots of generated code.  If you run into issues, ple
 ase don’t hesitate to ask for help on the users mailing list. ","description":" As noted above, the generated app is a very simple application consisting of a single domain object that can be easily renamed and extended. The intention is not to showcase all of Apache Isis' capabilities; rather it is to allow you to very easily modify the generated application (eg rename","id":283629224},"285898371":{"title":"ObjectUpdatedEvent","url":"guides/rgcms/rgcms.html#_rgcms_classes_lifecycleevent_ObjectUpdatedEvent","body":"ObjectUpdatedEvent  Subclass of AbstractLifecycleEvent, broadcast when an object has just been updated in the database. This is done either explicitly when the current transaction is flushed using the DomainObjectContainer's #flush(…​) method, else is done implicitly when the transaction commits at the end of the user request.  ObjectUpdatedEvent.Default is the concrete implementation that is used. ","description":" Subclass of AbstractLifecycleEvent, broadcast when
  an object has just been updated in the database. This is done either explicitly when the current transaction is flushed using the DomainObjectContainer's #flush(…​) method, else is done implicitly when the transaction commits at the end of the user request. ","id":285898371},"286850218":{"title":"Dependent choices for action parameters","url":"guides/ugfun/ugfun.html#_dependent_choices_for_action_parameters","body":"Dependent choices for action parameters  For action it is also possible (in a limited form) to define dependencies between parameters. Specifically, if one parameter is a drop-down choice, then other drop-down choices can be derived from it.  A good example is a category/sub-category:  Note how the choices method for the 2nd parameter also accepts the first parameter. ","description":" For action it is also possible (in a limited form) to define dependencies between parameters. Specifically, if one parameter is a drop-down choice, then other drop-down choices can be
  derived from it. ","id":286850218},"287120012":{"title":"Actions","url":"guides/ugfun/ugfun.html#_actions_2","body":"Actions  Of course, the precondition business rules described above are only one type of business rule.  More generally, business rules are implemented in the form of the implementation of actions. Rather than have the end-user have to edit individual properties of numerous objects, an action can encode these rules and allow only safe transformations of the application from one consistent state to the next. ","description":" Of course, the precondition business rules described above are only one type of business rule. ","id":287120012},"288377989":{"title":"Philosophy and Architecture","url":"guides/ugfun/ugfun.html#_ugfun_core-concepts_philosophy","body":"Philosophy and Architecture  This section describes some of the core ideas and architectural patterns upon which Apache Isis builds. ","description":" This section describes some of the core ideas and architectural
  patterns upon which Apache Isis builds. ","id":288377989},"288392697":{"title":"User Experience","url":"guides/ugvw/ugvw.html#_user_experience_3","body":"User Experience  The copy URL dialog is typically obtained by clicking on the icon.  Alternatively, alt+] will also open the dialog. It can be closed with either OK or the Esc key. ","description":" The copy URL dialog is typically obtained by clicking on the icon. ","id":288392697},"291813215":{"title":"Raising events programmatically","url":"guides/rgant/rgant.html#_raising_events_programmatically","body":"Raising events programmatically  Normally events are only raised for interactions through the UI. However, events can be raised programmatically either by calling the EventBusService API directly, or by emulating the UI by wrapping the target object using the WrapperFactory domain service. ","description":" Normally events are only raised for interactions through the UI. However, events can be raised programmatically either by
  calling the EventBusService API directly, or by emulating the UI by wrapping the target object using the WrapperFactory domain service. ","id":291813215},"293860175":{"title":"Usage","url":"guides/rgsvc/rgsvc.html#_usage_10","body":"Usage  The most common use-case is for bulk actions that act upon multiple objects in a list. The (same) Scratchpad service is injected into each of these objects, and so they can use pass information.  For example, the Isis addons example todoapp (not ASF) demonstrates how the Scratchpad service can be used to calculate the total cost of the selecte

<TRUNCATED>