/*! ATOGOV - SPA 2025-03-18, Copyright (c) 2025 Australian Taxation Office */ !function(e){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?e(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],e):e(ko,ko.validation={})}(function(f,e){if(void 0===f)throw new Error("Knockout is required, please ensure it is loaded before loading this validation plug-in");f.validation=e;var t,i,n,r,a,c,p=f.validation,o=f.utils,g=o.unwrapObservable,s=o.arrayForEach,u=o.extend,l={registerExtenders:!0,messagesOnModified:!0,errorsAsTitle:!0,errorsAsTitleOnModified:!1,messageTemplate:null,insertMessages:!0,parseInputAttributes:!1,writeInputAttributes:!1,decorateInputElement:!1,decorateElementOnModified:!0,errorClass:null,errorElementClass:"validationElement",errorMessageClass:"validationMessage",allowHtmlMessages:!1,grouping:{deep:!1,observable:!0,live:!1},validate:{}},d=u({},l),v=(d.html5Attributes=["required","pattern","min","max","step"],d.html5InputTypes=["email","number","date"],d.reset=function(){u(d,l)},p.configuration=d,p.utils=(t=(new Date).getTime(),i={},n="__ko_validation__",{isArray:function(e){return e.isArray||"[object Array]"===Object.prototype.toString.call(e)},isObject:function(e){return null!==e&&"object"==typeof e},isNumber:function(e){return!isNaN(e)},isObservableArray:function(e){return!!e&&"function"==typeof e.remove&&"function"==typeof e.removeAll&&"function"==typeof e.destroy&&"function"==typeof e.destroyAll&&"function"==typeof e.indexOf&&"function"==typeof e.replace},values:function(e){var t,r=[];for(t in e)e.hasOwnProperty(t)&&r.push(e[t]);return r},getValue:function(e){return"function"==typeof e?e():e},hasAttribute:function(e,t){return null!==e.getAttribute(t)},getAttribute:function(e,t){return e.getAttribute(t)},setAttribute:function(e,t,r){return e.setAttribute(t,r)},isValidatable:function(e){return!!(e&&e.rules&&e.isValid&&e.isModified)},insertAfter:function(e,t){e.parentNode.insertBefore(t,e.nextSibling)},newId:function(){return t+=1},getConfigOptions:function(e){return p.utils.contextFor(e)||p.configuration},setDomData:function(e,t){var r=e[n];r||(e[n]=r=p.utils.newId()),i[r]=t},getDomData:function(e){var t=e[n];return t?i[t]:undefined},contextFor:function(e){switch(e.nodeType){case 1:case 8:var t=p.utils.getDomData(e);if(t)return t;if(e.parentNode)return p.utils.contextFor(e.parentNode)}return undefined},isEmptyVal:function(e){return e===undefined||null===e||""===e||void 0},getOriginalElementTitle:function(e){var t=p.utils.getAttribute(e,"data-orig-title"),r=e.title;return p.utils.hasAttribute(e,"data-orig-title")?t:r},"async":function(e){window.setImmediate?window.setImmediate(e):window.setTimeout(e,0)},forEach:function(e,t){if(p.utils.isArray(e))return s(e,t);for(var r in e)e.hasOwnProperty(r)&&t(e[r],r)}}),r=0,a=p.configuration,c=p.utils,{init:function(e,t){0a[1]||n[1]===a[1]&&n[2]>=a[2]:!1;case"month":if(null===(n=e.match(i=/^(\d{4})-(\d{2})$/)))throw new Error("Invalid value for "+u+" attribute for month input. Should look like '2000-03' http://www.w3.org/TR/html-markup/input.month.html#input.month.attrs.min");return(a=s.match(i))?l?n[1]a[1]||n[1]===a[1]&&n[2]>=a[2]:!1;case"number":case"range":return l?!isNaN(e)&&parseFloat(e)<=parseFloat(s):!isNaN(e)&&parseFloat(e)>=parseFloat(s);default:return l?e<=s:s<=e}}}u(f.validation,v),p.rules={},p.rules.required={validator:function(e,t){var r;return e===undefined||null===e?!t:("string"==typeof(r=e)&&(r=String.prototype.trim?e.trim():e.replace(/^\s+|\s+$/g,"")),!t||0<(r+"").length)},message:"This field is required."},p.rules.min={validator:y("min"),message:"Please enter a value greater than or equal to {0}."},p.rules.max={validator:y("max"),message:"Please enter a value less than or equal to {0}."},p.rules.minLength={validator:function(e,t){return!!p.utils.isEmptyVal(e)||(p.utils.isNumber(e)?""+e:e).length>=t},message:"Please enter at least {0} characters."},p.rules.maxLength={validator:function(e,t){return!!p.utils.isEmptyVal(e)||(p.utils.isNumber(e)?""+e:e).length<=t},message:"Please enter no more than {0} characters."},p.rules.pattern={validator:function(e,t){return p.utils.isEmptyVal(e)||null!==e.toString().match(t)},message:"Please check this value."},p.rules.step={validator:function(e,t){var r;return!(!p.utils.isEmptyVal(e)&&"any"!==t)||(r=100*e%(100*t),Math.abs(r)<1e-5)||Math.abs(1-r)<1e-5},message:"The value must increment by {0}."},p.rules.email={validator:function(e,t){return!t||p.utils.isEmptyVal(e)||t&&/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(e)},message:"Please enter a proper email address."},p.rules.date={validator:function(e,t){return!t||p.utils.isEmptyVal(e)||t&&!/Invalid|NaN/.test(new Date(e))},message:"Please enter a proper date."},p.rules.dateISO={validator:function(e,t){return!t||p.utils.isEmptyVal(e)||t&&/^\d{4}[-/](?:0?[1-9]|1[012])[-/](?:0?[1-9]|[12][0-9]|3[01])$/.test(e)},message:"Please enter a proper date."},p.rules.number={validator:function(e,t){return!t||p.utils.isEmptyVal(e)||t&&/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(e)},message:"Please enter a number."},p.rules.digit={validator:function(e,t){return!t||p.utils.isEmptyVal(e)||t&&/^\d+$/.test(e)},message:"Please enter a digit."},p.rules.phoneUS={validator:function(e,t){return!t||!!p.utils.isEmptyVal(e)||"string"==typeof e&&(e=e.replace(/\s+/g,""),t)&&9