lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [lmi] valyuta/005 7454e60 4/6: Import various improvements


From: Greg Chicares
Subject: [lmi-commits] [lmi] valyuta/005 7454e60 4/6: Import various improvements from 'master'
Date: Mon, 25 Jan 2021 12:11:02 -0500 (EST)

branch: valyuta/005
commit 7454e60867ca84c755bdec1c23bce3ebe93bc263
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>

    Import various improvements from 'master'
    
    This "merge" was done manually, without git-merge, because repeating
    minor changes was a good way to make sure they're correct and complete.
---
 Makefile.am               |    2 -
 antediluvian_stubs.cpp    |    2 +-
 any_member.hpp            |   18 +-
 cache_file_reads.hpp      |    3 +-
 cache_file_reads_test.cpp |    6 +-
 database.cpp              |    3 +-
 dbdict.cpp                |    1 -
 dbdict.hpp                |    2 +-
 fund_data.cpp             |    5 +-
 fund_data.hpp             |    6 +-
 ihs_basicval.cpp          |    8 +-
 lingo.cpp                 |    1 -
 objects.make              |    2 -
 product_data.cpp          |   81 +-
 product_data.hpp          |    9 +-
 product_file_test.cpp     |   42 +-
 rounding_rules.cpp        |    3 +-
 rounding_rules.hpp        |    6 +-
 skin_group_carveout3.xrc  | 2103 +++++++++++++++++++++++++++++++++++++++++++++
 stratified_charges.cpp    |    2 +-
 stratified_charges.hpp    |   10 +-
 verify_products.cpp       |    3 +-
 version.hpp               |    2 +-
 23 files changed, 2204 insertions(+), 116 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 2d1ddc5..00772d8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1045,7 +1045,6 @@ test_path_utility_LDADD = \
 test_premium_tax_SOURCES = \
   $(common_test_objects) \
   calendar_date.cpp \
-  ce_product_name.cpp \
   data_directory.cpp \
   database.cpp \
   datum_base.cpp \
@@ -1088,7 +1087,6 @@ test_print_matrix_LDADD = \
 test_product_file_SOURCES = \
   $(common_test_objects) \
   calendar_date.cpp \
-  ce_product_name.cpp \
   data_directory.cpp \
   database.cpp \
   datum_base.cpp \
diff --git a/antediluvian_stubs.cpp b/antediluvian_stubs.cpp
index d794aba..966515a 100644
--- a/antediluvian_stubs.cpp
+++ b/antediluvian_stubs.cpp
@@ -151,7 +151,7 @@ product_data::product_data(product_data const&)
     :MemberSymbolTable <product_data> {}
 {}
 
-std::string product_data::actual_filename(std::string const&)
+std::string filename_from_product_name(std::string const&)
 {
     return empty_string;
 }
diff --git a/any_member.hpp b/any_member.hpp
index 0bceddc..11ab6c2 100644
--- a/any_member.hpp
+++ b/any_member.hpp
@@ -105,6 +105,11 @@ class placeholder
 
 inline placeholder::~placeholder() = default;
 
+// Forward declaration of class any_member.
+
+template<typename ClassType>
+class any_member;
+
 // Definition of class holder.
 
 template<typename ClassType, typename ValueType>
@@ -113,7 +118,7 @@ class holder final
 {
     // Friendship is extended to class any_member only to support its
     // cast operations.
-    template<typename> friend class any_member;
+    friend class any_member<ClassType>;
 
   public:
     holder(ClassType*, ValueType const&);
@@ -214,13 +219,6 @@ void* holder<ClassType,ValueType>::defraud() const
 }
 #endif // defined LMI_MSC
 
-// Definition of class any_member.
-
-// This class is necessarily Assignable, so that a std::map can hold it.
-
-template<typename ClassType>
-class any_member;
-
 template<typename MemberType, typename ClassType>
 MemberType* exact_cast(any_member<ClassType>&);
 
@@ -229,6 +227,10 @@ MemberType* member_cast(any_member<ClassType>&);
 
 struct any_member_test;
 
+// Definition of class any_member.
+
+// This class is necessarily Assignable, so that a std::map can hold it.
+
 template<typename ClassType>
 class any_member final
     :public any_entity
diff --git a/cache_file_reads.hpp b/cache_file_reads.hpp
index 4c29afd..5591730 100644
--- a/cache_file_reads.hpp
+++ b/cache_file_reads.hpp
@@ -42,8 +42,7 @@ namespace detail
 /// Motivation: It is costly to deserialize objects from xml, so cache
 /// them for reuse. The cache persists until the program terminates.
 ///
-/// Requires: T::T(fs::path const& filename).
-///   default ctor is not required
+/// Requires: T::T(fs::path const& filename), though not T::T().
 ///
 /// For each filename, the cache stores one instance, which is
 /// replaced by reloading the file if its write time has changed.
diff --git a/cache_file_reads_test.cpp b/cache_file_reads_test.cpp
index c20af49..9120a56 100644
--- a/cache_file_reads_test.cpp
+++ b/cache_file_reads_test.cpp
@@ -37,7 +37,6 @@ class X
     :public cache_file_reads<X>
 {
   public:
-//  X() = default;
     X(fs::path const& filename)
         {
         std::ifstream ifs(filename.string(), ios_in_binary());
@@ -72,11 +71,8 @@ class cache_file_reads_test
 
 void cache_file_reads_test::test_preconditions()
 {
-    // X() and X(filename) are required.
-    // ...well, no, not actually:
-//  X x0;
+    // X(fs::path const&) is required.
     X x0("sample.ill");
-    X x1("sample.ill");
 
     // The cache is accessible with or without an object.
     BOOST_TEST_EQUAL
diff --git a/database.cpp b/database.cpp
index 4595a4d..2837adc 100644
--- a/database.cpp
+++ b/database.cpp
@@ -192,8 +192,7 @@ void product_database::initialize(std::string const& 
product_name)
         }
     else
         {
-//      product_data const p(product_name);
-        std::string f = product_data::actual_filename(product_name);
+        std::string f = filename_from_product_name(product_name);
         product_data const& p(*product_data::read_via_cache(f));
         std::string const filename(p.datum("DatabaseFilename"));
         LMI_ASSERT(!filename.empty());
diff --git a/dbdict.cpp b/dbdict.cpp
index a205984..6ce5cd4 100644
--- a/dbdict.cpp
+++ b/dbdict.cpp
@@ -45,7 +45,6 @@
 #include <boost/filesystem/convenience.hpp>
 #include <boost/filesystem/fstream.hpp>
 #include <boost/filesystem/operations.hpp>
-#include <boost/filesystem/path.hpp>
 
 #include <vector>
 
diff --git a/dbdict.hpp b/dbdict.hpp
index c207d6d..699fbdf 100644
--- a/dbdict.hpp
+++ b/dbdict.hpp
@@ -47,7 +47,7 @@ class LMI_SO DBDictionary
 
   public:
     DBDictionary();
-    DBDictionary(fs::path const& filename);
+    explicit DBDictionary(fs::path const& filename);
 
     ~DBDictionary() override = default;
 
diff --git a/fund_data.cpp b/fund_data.cpp
index ab424ab..702cd65 100644
--- a/fund_data.cpp
+++ b/fund_data.cpp
@@ -33,7 +33,6 @@
 #include "xml_serialize.hpp"
 
 #include <boost/filesystem/convenience.hpp> // basename()
-#include <boost/filesystem/path.hpp>
 
 //============================================================================
 FundInfo::FundInfo
@@ -77,9 +76,9 @@ template<> struct xml_io<FundInfo>
 } // namespace xml_serialize
 
 //============================================================================
-FundData::FundData(std::string const& a_Filename)
+FundData::FundData(fs::path const& a_Filename)
 {
-    Read(a_Filename);
+    Read(a_Filename.string());
 }
 
 int FundData::GetNumberOfFunds() const
diff --git a/fund_data.hpp b/fund_data.hpp
index 75e4757..08ad26b 100644
--- a/fund_data.hpp
+++ b/fund_data.hpp
@@ -24,8 +24,11 @@
 
 #include "config.hpp"
 
+#include "cache_file_reads.hpp"
 #include "so_attributes.hpp"
 
+#include <boost/filesystem/path.hpp>
+
 #include <string>
 #include <vector>
 
@@ -60,9 +63,10 @@ class LMI_SO FundInfo final
 };
 
 class LMI_SO FundData final
+    :public cache_file_reads<FundData>
 {
   public:
-    FundData(std::string const& a_Filename);
+    explicit FundData(fs::path const& a_Filename);
     ~FundData() = default;
 
     static void write_funds_files();
diff --git a/ihs_basicval.cpp b/ihs_basicval.cpp
index caf67b6..e256df6 100644
--- a/ihs_basicval.cpp
+++ b/ihs_basicval.cpp
@@ -69,9 +69,9 @@ BasicValues::BasicValues(Input const& input)
 //  ,product_            (yare_input_.ProductName)
 // Safe to dereference?
 //  ,product_            
(*product_data::read_via_cache(yare_input_.ProductName))
-//  ,product_            
(*product_data::read_via_cache(product_data::actual_filename(yare_input_.ProductName)))
+//  ,product_            
(*product_data::read_via_cache(filename_from_product_name(yare_input_.ProductName)))
     // Throw if null?
-    ,product_            
(product_data::read_via_cache(product_data::actual_filename(yare_input_.ProductName)))
+    ,product_            
(product_data::read_via_cache(filename_from_product_name(yare_input_.ProductName)))
     ,database_           (yare_input_)
     ,DefnLifeIns_        {mce_cvat}
     ,DefnMaterialChange_ {mce_unnecessary_premium}
@@ -105,9 +105,9 @@ BasicValues::BasicValues
     :yare_input_         (Input{})
 //  ,product_            (a_ProductName)
 // Safe to dereference?
-//  ,product_            
(*product_data::read_via_cache(product_data::actual_filename(a_ProductName)))
+//  ,product_            
(*product_data::read_via_cache(filename_from_product_name(a_ProductName)))
     // Throw if null?
-    ,product_            
(product_data::read_via_cache(product_data::actual_filename(a_ProductName)))
+    ,product_            
(product_data::read_via_cache(filename_from_product_name(a_ProductName)))
     ,database_
         (a_ProductName
         ,a_Gender
diff --git a/lingo.cpp b/lingo.cpp
index c2a0469..79f9056 100644
--- a/lingo.cpp
+++ b/lingo.cpp
@@ -32,7 +32,6 @@
 #include "xml_serialize.hpp"
 
 #include <boost/filesystem/convenience.hpp>
-#include <boost/filesystem/path.hpp>
 
 /// Construct from filename.
 
diff --git a/objects.make b/objects.make
index c5a8dfc..cb19e68 100644
--- a/objects.make
+++ b/objects.make
@@ -897,7 +897,6 @@ premium_tax_test$(EXEEXT): \
   $(boost_filesystem_objects) \
   $(common_test_objects) \
   calendar_date.o \
-  ce_product_name.o \
   data_directory.o \
   database.o \
   datum_base.o \
@@ -935,7 +934,6 @@ product_file_test$(EXEEXT): \
   $(boost_filesystem_objects) \
   $(common_test_objects) \
   calendar_date.o \
-  ce_product_name.o \
   data_directory.o \
   database.o \
   datum_base.o \
diff --git a/product_data.cpp b/product_data.cpp
index e747890..056ff5e 100644
--- a/product_data.cpp
+++ b/product_data.cpp
@@ -26,7 +26,6 @@
 
 #include "alert.hpp"
 #include "assert_lmi.hpp"
-////#include "ce_product_name.hpp"
 #include "contains.hpp"
 #include "data_directory.hpp"           // AddDataDir()
 #include "map_lookup.hpp"
@@ -34,7 +33,6 @@
 #include "xml_serialize.hpp"
 
 #include <boost/filesystem/convenience.hpp>
-#include <boost/filesystem/path.hpp>
 
 #include <vector>
 
@@ -119,46 +117,24 @@ std::string const& glossed_string::gloss() const
 }
 
 /// Default ctor, used only by derived classes and friends.
+
 product_data::product_data()
 {
     ascribe_members();
 }
 
-product_data::product_data(fs::path const& filename)
+product_data::product_data(fs::path const& product_filename)
 {
     ascribe_members();
-    load(filename.string());
+    load(product_filename);
 }
 
-/// Construct from product name.
-///
-/// The argument is a string (typically Input::ProductName) such as
-/// 'sample'. The appropriate extension and path are added here to
-/// produce a filepath.
-///
-/// Somewhat arbitrarily, forbid '.' in product names. There's no real
-/// need to allow that, and it would complicate the code. A product
-/// name like "ul.with.variable.funds" could too easily be mistaken
-/// for a '.funds' file. The boost filesystem portability guidelines
-/// suggest "Do not use more that one period in a file name", and
-/// extensions are added to product names to create file names.
-
 product_data::product_data(std::string const& product_name)
-    :product_data(fs::path(actual_filename(product_name)))
+    :product_data(fs::path(filename_from_product_name(product_name)))
 {
 }
 
-#if 0
-// Either add 'ce_product_name.o' to unit-test targets in makefiles,
-// or abandon this idea.
-product_data::product_data(ce_product_name const& product_name)
-    :product_data(fs::path(actual_filename(product_name.str())))
-{
-}
-#endif // 0
-
 product_data::product_data(product_data const& z)
-// Is this initializer-list necessary?
     :xml_serializable  <product_data> {}
     ,MemberSymbolTable <product_data> {}
 {
@@ -181,25 +157,6 @@ std::string const& product_data::datum(std::string const& 
name) const
     return member_cast<glossed_string>(operator[](name))->datum();
 }
 
-std::string product_data::actual_filename(std::string const& product_name)
-{
-    fs::path path(product_name);
-if(false) warning()
-    << product_name << " product_name\n"
-    << path.string() << " path.string()\n"
-    << fs::basename(path) << " fs::basename(path)\n"
-    << LMI_FLUSH
-    ;
-    LMI_ASSERT(product_name == fs::basename(path));
-    path = fs::change_extension(path, ".policy");
-if(false) warning()
-    << product_name << " product_name\n"
-    << path.string() << " path.string()\n"
-    << LMI_FLUSH
-    ;
-    return AddDataDir(path.string());
-}
-
 /// Reference to named member.
 
 glossed_string& product_data::item(std::string const& name)
@@ -968,6 +925,36 @@ void product_data::write_policy_files()
     sample2xyz  ().save(AddDataDir("sample2xyz.policy"));
 }
 
+/// Convert a product name to the name of its '.product' file.
+///
+/// For example: 'sample' --> '/opt/lmi/data/sample.product'.
+///
+/// The argument is a string (typically Input::ProductName) such as
+/// 'sample'. The appropriate extension and path are added here to
+/// produce a filepath.
+///
+/// Somewhat arbitrarily, forbid '.' in product names. There's no real
+/// need to allow that, and it would complicate the code. A product
+/// name like "ul.with.variable.funds" could too easily be mistaken
+/// for a '.funds' file. The boost filesystem portability guidelines
+/// suggest "Do not use more that [sic] one period in a file name",
+/// and extensions are added to product names to create file names.
+///
+/// Rejected alternative: take a 'ce_product_name' argument instead.
+/// That would constrain the argument in a natural way, but would
+/// force coupling between class ce_product_name and client code
+/// that has no other need to know about it; furthermore, the range
+/// of 'ce_product_name' values is determined only at run time, and
+/// it would be strange to propagate a run-time dependency.
+
+std::string filename_from_product_name(std::string const& product_name)
+{
+    fs::path path(product_name);
+    LMI_ASSERT(product_name == fs::basename(path));
+    path = fs::change_extension(path, ".policy");
+    return AddDataDir(path.string());
+}
+
 /// Load from file. This free function can be invoked across dll
 /// boundaries, even though xml_serializable<> is instantiated only
 /// in the present TU.
diff --git a/product_data.hpp b/product_data.hpp
index 0009116..c7bd1c4 100644
--- a/product_data.hpp
+++ b/product_data.hpp
@@ -33,8 +33,6 @@
 
 #include <string>
 
-////class LMI_SO_FWD_DECL ce_product_name;
-
 /// A single product datum: a string with an optional gloss.
 ///
 /// For example, the principal string datum might be the full name of
@@ -93,15 +91,12 @@ class LMI_SO product_data
     typedef deserialized<product_data>::value_type value_type;
 
   public:
-    explicit product_data(fs::path const& filename);
+    explicit product_data(fs::path const& product_filename);
     explicit product_data(std::string const& product_name);
-////    explicit product_data(ce_product_name const& product_name);
     ~product_data() override;
 
     std::string const& datum(std::string const& name) const;
 
-    static std::string actual_filename(std::string const& product_name);
-
     // Legacy functions to support creating product files programmatically.
     static void write_policy_files();
     static void write_proprietary_policy_files();
@@ -377,6 +372,8 @@ class LMI_SO product_data
     glossed_string DefnSpecAmt;
 };
 
+LMI_SO std::string filename_from_product_name(std::string const&);
+
 LMI_SO void load(product_data      &, fs::path const&);
 LMI_SO void save(product_data const&, fs::path const&);
 
diff --git a/product_file_test.cpp b/product_file_test.cpp
index a0fd21f..ea047cb 100644
--- a/product_file_test.cpp
+++ b/product_file_test.cpp
@@ -37,6 +37,8 @@
 #include "test_tools.hpp"
 #include "timer.hpp"                    // TimeAnAliquot()
 
+#include <boost/filesystem/path.hpp>
+
 #include <string>
 #include <utility>                      // move()
 
@@ -62,25 +64,19 @@ class product_file_test
     static void read_policy_file()     ;
     static void read_rounding_file()   ;
     static void read_stratified_file() ;
-
-    static std::string database_filename_   ;
-    static std::string fund_filename_       ;
-    static std::string lingo_filename_      ;
-    static std::string policy_filename_     ;
-    static std::string rounding_filename_   ;
-    static std::string stratified_filename_ ;
+    static void read_cached_files()    ;
+
+    inline static fs::path database_filename_   ;
+    inline static fs::path fund_filename_       ;
+    inline static fs::path lingo_filename_      ;
+    inline static fs::path policy_filename_     ;
+    inline static fs::path rounding_filename_   ;
+    inline static fs::path stratified_filename_ ;
 };
 
-std::string product_file_test::database_filename_   ;
-std::string product_file_test::fund_filename_       ;
-std::string product_file_test::lingo_filename_      ;
-std::string product_file_test::policy_filename_     ;
-std::string product_file_test::rounding_filename_   ;
-std::string product_file_test::stratified_filename_ ;
-
 void product_file_test::get_filenames()
 {
-    policy_filename_     = "sample";
+    policy_filename_     = filename_from_product_name("sample");
     product_data p(policy_filename_);
     database_filename_   = AddDataDir(p.datum("DatabaseFilename"));
     fund_filename_       = AddDataDir(p.datum("FundFilename"    ));
@@ -138,11 +134,6 @@ void product_file_test::test_copying()
     BOOST_TEST(      99 == g.query<int>(DB_MaxIncrAge));
 }
 
-// This implementation:
-//   auto z = DBDictionary::read_via_cache(database_filename_);
-// would cause assay_speed() to report a much faster run time,
-// yet such a timing would have little significance.
-
 void product_file_test::read_database_file()
 {
     DBDictionary z(database_filename_);
@@ -173,6 +164,16 @@ void product_file_test::read_stratified_file()
     stratified_charges z(stratified_filename_);
 }
 
+void product_file_test::read_cached_files()
+{
+    DBDictionary       ::read_via_cache(database_filename_);
+    FundData           ::read_via_cache(fund_filename_);
+    lingo              ::read_via_cache(lingo_filename_);
+    product_data       ::read_via_cache(policy_filename_);
+    rounding_rules     ::read_via_cache(rounding_filename_);
+    stratified_charges ::read_via_cache(stratified_filename_);
+}
+
 void product_file_test::assay_speed()
 {
     std::cout
@@ -183,6 +184,7 @@ void product_file_test::assay_speed()
         << "\n  Read 'policy'     : " << TimeAnAliquot(read_policy_file    )
         << "\n  Read 'rounding'   : " << TimeAnAliquot(read_rounding_file  )
         << "\n  Read 'stratified' : " << TimeAnAliquot(read_stratified_file)
+        << "\n  Read all, cached' : " << TimeAnAliquot(read_cached_files   )
         << '\n'
         ;
 }
diff --git a/rounding_rules.cpp b/rounding_rules.cpp
index fa78497..a0dd519 100644
--- a/rounding_rules.cpp
+++ b/rounding_rules.cpp
@@ -31,7 +31,6 @@
 #include "xml_serialize.hpp"
 
 #include <boost/filesystem/convenience.hpp>
-#include <boost/filesystem/path.hpp>
 
 template class xml_serializable<rounding_rules>;
 
@@ -167,7 +166,7 @@ rounding_rules::rounding_rules()
 /// that violate this precondition, but this ctor prevents them from
 /// being used to produce illustrations.
 
-rounding_rules::rounding_rules(std::string const& filename)
+rounding_rules::rounding_rules(fs::path const& filename)
 {
     ascribe_members();
 
diff --git a/rounding_rules.hpp b/rounding_rules.hpp
index 7b6328c..3f2070c 100644
--- a/rounding_rules.hpp
+++ b/rounding_rules.hpp
@@ -25,11 +25,14 @@
 #include "config.hpp"
 
 #include "any_member.hpp"
+#include "cache_file_reads.hpp"
 #include "mc_enum.hpp"
 #include "mc_enum_types.hpp"
 #include "so_attributes.hpp"
 #include "xml_serializable.hpp"
 
+#include <boost/filesystem/path.hpp>
+
 #include <string>
 
 /// Parameters of a rounding rule.
@@ -91,11 +94,12 @@ class LMI_SO rounding_parameters final
 class LMI_SO rounding_rules final
     :public xml_serializable  <rounding_rules>
     ,public MemberSymbolTable <rounding_rules>
+    ,public cache_file_reads  <rounding_rules>
 {
     friend class RoundingDocument;
 
   public:
-    explicit rounding_rules(std::string const& filename);
+    explicit rounding_rules(fs::path const& filename);
     ~rounding_rules() override = default;
 
     rounding_parameters const& datum(std::string const& name) const;
diff --git a/skin_group_carveout3.xrc b/skin_group_carveout3.xrc
new file mode 100644
index 0000000..850bbdf
--- /dev/null
+++ b/skin_group_carveout3.xrc
@@ -0,0 +1,2103 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<resource xmlns="http://www.wxwidgets.org/wxxrc"; version="2.5.3.0">
+
+<!--
+    Let me illustrate...: wxWindows xml input-notebook resources.
+
+    Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 
2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Gregory W. Chicares.
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License version 2 as
+    published by the Free Software Foundation.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+
+    https://savannah.nongnu.org/projects/lmi
+    email: <gchicares@sbcglobal.net>
+    snail: Chicares, 186 Belle Woods Drive, Glastonbury CT 06033, USA
+
+    This version is designed for group-carveout users in the field;
+    it omits the list-bill date and the inforce and reports panels.
+-->
+
+<object class="wxPanel" name="plan_panel">
+    <object class="wxFlexGridSizer">
+        <cols>2</cols>
+        <growablerows>1</growablerows>
+        <growablecols>1</growablecols>
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <border>4</border>
+            <object class="wxFlexGridSizer">
+                <cols>1</cols>
+                <rows>2</rows>
+                <growablecols>0</growablecols>
+                <growablerows>1</growablerows>
+                <object class="sizeritem">
+                    <flag>wxALIGN_LEFT|wxALIGN_TOP|wxLEFT</flag>
+                    <border>4</border>
+                    <object class="wxStaticText">
+                        <label>Policy</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>4</border>
+                    <object class="wxListBox" name="ProductName">
+                        <help>Product</help>
+                        <size>90,-1d</size>
+                        <style>wxLB_SINGLE|wxLB_SORT</style>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <border>4</border>
+            <object class="wxFlexGridSizer">
+                <cols>2</cols>
+                <growablerows>0</growablerows>
+                <growablecols>1</growablecols>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxLEFT|wxTOP|wxBOTTOM</flag>
+                    <border>2</border>
+                    <object class="wxFlexGridSizer">
+                        <cols>1</cols>
+                        <growablerows>0,1</growablerows>
+                        <growablecols>0</growablecols>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALL</flag>
+                            <border>2</border>
+                            <object class="wxRadioBox" 
name="GroupUnderwritingType">
+                                <help>Group underwriting</help>
+                                <style>wxRA_SPECIFY_COLS</style>
+                                <label>Group underwriting</label>
+                                <content>
+                                    <item>Medical</item>
+                                    <item>Paramedical</item>
+                                    <item>Nonmedical</item>
+                                    <item>Simplified issue</item>
+                                    <item>Guaranteed issue</item>
+                                </content>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALL</flag>
+                            <border>2</border>
+                            <object class="wxRadioBox" name="AvoidMecMethod">
+                                <help>MEC avoidance</help>
+                                <style>wxRA_SPECIFY_COLS</style>
+                                <label>MEC avoidance</label>
+<!-- SOMEDAY !! This should become a checkbox. -->
+                                <content>
+                                    <item helptext="Do not try to avoid a 
MEC">Allow MEC</item>
+                                    <item helptext="Avoid a MEC by decreasing 
premium">Reduce premium</item>
+                                </content>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALL</flag>
+                            <border>2</border>
+                            <object class="wxRadioBox" 
name="DefinitionOfLifeInsurance">
+                                <help>Definition of life insurance</help>
+                                <style>wxRA_SPECIFY_COLS</style>
+                                <label>Definition of life insurance</label>
+                                <dimension>1</dimension>
+                                <selection>0</selection>
+                                <content>
+                                    <item helptext="Definition of life 
insurance is cash value accumulation test">CVAT</item>
+                                    <item helptext="Definition of life 
insurance is guideline premium test">GPT</item>
+                                    <item helptext="Do not comply with US 
definition of life insurance">Not 7702 compliant</item>
+                                </content>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxFlexGridSizer">
+                        <cols>1</cols>
+                        <growablerows>0,1,2,3,4,5,6</growablerows>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALL</flag>
+                            <border>2</border>
+                            <object class="wxStaticBoxSizer">
+                                <orient>wxVERTICAL</orient>
+                                <label>Cell</label>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_LEFT</flag>
+                                    <border>2</border>
+                                    <object class="wxFlexGridSizer">
+                                        <cols>0</cols>
+                                        <rows>1</rows>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM</flag>
+                                            <border>2</border>
+                                            <object class="wxStaticText">
+                                                <label># identical 
lives</label>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_TOP|wxALL</flag>
+                                            <border>2</border>
+                                            <object class="wxTextCtrl" 
name="NumberOfIdenticalLives">
+                                                <help>Number of identical 
lives represented by this cell</help>
+                                                <size>50,-1</size>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_LEFT|wxLEFT|wxTOP</flag>
+                                    <border>2</border>
+                                    <object class="wxCheckBox" 
name="IncludeInComposite">
+                                        <help>Include this individual in any 
group composite</help>
+                                        <label>Include in composite</label>
+                                        <checked>0</checked>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                            <border>2</border>
+                            <object class="wxCheckBox" 
name="RetireesCanEnroll">
+                                <help>Let individuals enroll after their 
retirement</help>
+                                <label>Retirees eligible to enroll</label>
+                                <checked>0</checked>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                            <border>2</border>
+                            <object class="wxCheckBox" 
name="EffectiveDateToday">
+                                <help>Set effective date to current date</help>
+                                <label>Effective today</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALL</flag>
+                            <border>2</border>
+                            <object class="wxFlexGridSizer">
+                                <rows>1</rows>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                                    <border>2</border>
+                                    <object class="wxStaticText">
+                                        <label>Effective date</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxGROW</flag>
+                                    <border>2</border>
+                                    <object class="wxDatePickerCtrl" 
name="EffectiveDate">
+                                        <help>Effective date</help>
+                                        <size>90,-1</size>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALL</flag>
+                            <border>2</border>
+                            <object class="wxFlexGridSizer">
+                                <rows>1</rows>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                                    <border>2</border>
+                                    <object class="wxStaticText">
+                                        <label>Last COI reentry date</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxGROW</flag>
+                                    <border>2</border>
+                                    <object class="wxDatePickerCtrl" 
name="LastCoiReentryDate">
+                                        <help>Last COI reentry date</help>
+                                        <size>90,-1</size>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALL</flag>
+                            <object class="wxFlexGridSizer">
+                                <rows>1</rows>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>2</border>
+                                    <object class="wxStaticText">
+                                        <label>State of jurisdiction</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxGROW|wxALL</flag>
+                                    <border>2</border>
+                                    <object class="wxComboBox" 
name="StateOfJurisdiction">
+                                        <help>State that approves policy form 
and rate filing, and governs everything else except premium tax</help>
+                                        
<style>wxCB_DROPDOWN|wxCB_READONLY</style>
+                                        
<content><item>MM</item><item>WW</item></content>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALL</flag>
+                            <object class="wxFlexGridSizer">
+                                <rows>1</rows>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</flag>
+                                    <border>2</border>
+                                    <object class="wxStaticText">
+                                        <label>Premium tax state</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxGROW|wxLEFT</flag>
+                                    <border>2</border>
+                                    <object class="wxComboBox" 
name="PremiumTaxState">
+                                        <help>State to which premium tax is 
paid--affects premium load if the tax is passed through</help>
+                                        
<style>wxCB_DROPDOWN|wxCB_READONLY</style>
+                                        
<content><item>MM</item><item>WW</item></content>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+            <border>4</border>
+            <object class="wxStaticText">
+                <style>wxALIGN_LEFT</style>
+                <label>Comments</label>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxGROW</flag>
+            <border>4</border>
+            <object class="wxTextCtrl" name="Comments">
+                <help>Freeform comments</help>
+                <size>180,20</size>
+                <style>wxTE_MULTILINE</style>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+            <border>4</border>
+            <object class="wxStaticText">
+                <label>Extra policy fee</label>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxGROW</flag>
+            <border>4</border>
+            <object class="InputSequenceEntry" name="ExtraMonthlyCustodialFee">
+                <title>Additional monthly policy fee</title>
+                <help>Additional monthly policy fee (e.g., for fund custodian 
charges)</help>
+                <size>180,-1</size>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+            <border>4</border>
+            <object class="wxStaticText">
+                <label>Current COI multiplier</label>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxGROW</flag>
+            <border>4</border>
+            <object class="InputSequenceEntry" name="CurrentCoiMultiplier">
+                <title>Multiplier for current COI rates</title>
+                <help>Multiplier for current COI rates</help>
+                <size>180,-1</size>
+            </object>
+        </object>
+    </object>
+</object>
+
+<object class="wxPanel" name="participant_panel">
+    <object class="wxFlexGridSizer">
+        <rows>2</rows>
+        <growablecols>0</growablecols>
+        <growablerows>1</growablerows>
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <object class="wxFlexGridSizer">
+                <rows>1</rows>
+                <growablecols>0,1,2</growablecols>
+                <growablerows>0</growablerows>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxRadioBox" name="Gender">
+                        <help>Gender</help>
+                        <style>wxRA_SPECIFY_COLS</style>
+                        <label>Gender</label>
+                        <dimension>1</dimension>
+                        <selection>0</selection>
+                        <content>
+                            <item helptext="Female rates">Female</item>
+                            <item helptext="Male rates">Male</item>
+                            <item helptext="Rates not differentiated by 
gender">Unisex</item>
+                        </content>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxRadioBox" name="Smoking">
+                        <help>Smoking</help>
+                        <style>wxRA_SPECIFY_COLS</style>
+                        <label>Smoker</label>
+                        <dimension>1</dimension>
+                        <selection>0</selection>
+                        <content>
+                            <item helptext="Smoker or tobacco user, as 
applicable">Smoker</item>
+                            <item helptext="Nonsmoker or non-tobacco-user, as 
applicable">Nonsmoker</item>
+                            <item helptext="Rates not differentiated by 
smoking">Unismoke</item>
+                        </content>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxRadioBox" name="UnderwritingClass">
+                        <help>Underwriting class</help>
+                        <style>wxRA_SPECIFY_COLS</style>
+                        <label>Class</label>
+                        <dimension>1</dimension>
+                        <selection>0</selection>
+                        <content>
+                            <item helptext="Preferred class">Preferred</item>
+                            <item helptext="Standard class">Standard</item>
+                            <item helptext="Table rated">Rated</item>
+                            <item helptext="Ultra-preferred class">Ultra</item>
+                        </content>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxFlexGridSizer">
+                        <cols>1</cols>
+                        <growablecols>0</growablecols>
+                        <growablerows>0,1</growablerows>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALL</flag>
+                            <object class="wxCheckBox" name="UseDOB">
+                                <help>Calculate issue age based on date of 
birth and effective date, automatically reflecting changes in effective 
date</help>
+                                <label>Birthdate overrides issue age</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALL</flag>
+                            <object class="wxFlexGridSizer">
+                                <cols>2</cols>
+                                <growablecols>0</growablecols>
+                                <growablerows>0,1,2</growablerows>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                                    <object class="wxStaticText">
+                                        <label>Birthdate </label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                                    <object class="wxDatePickerCtrl" 
name="DateOfBirth">
+                                        <help>Date of birth</help>
+                                        <size>90,-1</size>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                                    <object class="wxStaticText">
+                                        <label>Issue age </label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                                    <object class="wxSpinCtrl" name="IssueAge">
+                                        <help>Insurance age on date of 
issue</help>
+                                        <size>80,-1</size>
+                                        <style>wxSP_ARROW_KEYS</style>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                                    <object class="wxStaticText">
+                                        <label>Retirement age </label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                                    <object class="wxSpinCtrl" 
name="RetirementAge">
+                                        <help>Insurance age on date of 
retirement</help>
+                                        <size>80,-1</size>
+                                        <style>wxSP_ARROW_KEYS</style>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <object class="wxFlexGridSizer">
+                <cols>1</cols>
+                <growablecols>0</growablecols>
+<!-- This control really should be here, but end users are not accustomed to 
it.
+                <object class="sizeritem">
+                    <flag>wxALIGN_BOTTOM|wxGROW|wxALL</flag>
+                    <border>4</border>
+                    <object class="wxFlexGridSizer">
+                        <rows>1</rows>
+                        <growablecols>1</growablecols>
+                        <object class="sizeritem">
+                            <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                            <object class="wxCheckBox" 
name="OverrideCoiMultiplier">
+                                <help>Override default country COI multiplier 
for current COI rates</help>
+                                <label>Override country COI multiplier </label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW</flag>
+                            <object class="wxTextCtrl" 
name="CountryCoiMultiplier">
+                                <help>Country multiplier for current COI 
rates</help>
+                                <size>10,-1</size>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+-->
+                <object class="sizeritem">
+                    <flag>wxALIGN_BOTTOM|wxGROW|wxALL</flag>
+                    <border>4</border>
+                    <object class="wxFlexGridSizer">
+                        <rows>1</rows>
+                        <growablecols>1</growablecols>
+                        <object class="sizeritem">
+                            <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                            <object class="wxStaticText">
+                                <label>Substandard table </label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW</flag>
+                            <object class="wxComboBox" name="SubstandardTable">
+                                <help>Substandard table rating</help>
+                                <style>wxCB_DROPDOWN|wxCB_READONLY</style>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_BOTTOM|wxGROW|wxALL</flag>
+                    <border>4</border>
+                    <object class="wxFlexGridSizer">
+                        <rows>1</rows>
+                        <growablecols>1</growablecols>
+                        <object class="sizeritem">
+                            <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                            <object class="wxStaticText">
+                                <label>Flat extra </label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW</flag>
+                            <object class="InputSequenceEntry" 
name="FlatExtra">
+                                <title>Annual flat extra per thousand</title>
+                                <help>Annual flat extra per thousand</help>
+                                <size>10,-1</size>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+    </object>
+</object>
+
+<object class="wxPanel" name="solve_panel">
+    <object class="wxFlexGridSizer">
+        <cols>3</cols>
+        <rows>0</rows>
+        <growablecols>0,1,2</growablecols>
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <border>4</border>
+            <object class="wxRadioBox" name="SolveType">
+                <help>What to solve for</help>
+                <style>wxRA_SPECIFY_COLS</style>
+                <label>Solve for</label>
+                <content>
+                    <item>No solve</item>
+                    <item>Specified amount</item>
+                    <item>Employee premium</item>
+                    <item>Employer premium</item>
+                    <item>Loan</item>
+                    <item>Withdrawal</item>
+                </content>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <border>4</border>
+            <object class="wxStaticBoxSizer">
+                <orient>wxVERTICAL</orient>
+                <label>During the period</label>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>4</border>
+                    <object class="wxFlexGridSizer">
+                        <cols>2</cols>
+                        <rows>2</rows>
+                        <object class="sizeritem">
+                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                            <border>4</border>
+                            <object class="wxRadioBox" name="SolveFromWhich">
+                                <help>Beginning of solve period 
(inclusive)</help>
+                                <label>From</label>
+                                <style>wxRA_SPECIFY_COLS</style>
+                                <content>
+                                    <item>Issue</item>
+                                    <item>Year</item>
+                                    <item>Age</item>
+                                    <item>Retirement</item>
+                                </content>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxBOTTOM</flag>
+                            <border>2</border>
+                            <object class="wxFlexGridSizer">
+                                <cols>1</cols>
+                                <rows>2</rows>
+                                <growablerows>0,1</growablerows>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxBOTTOM</flag>
+                                    <border>2</border>
+                                    <object class="wxFlexGridSizer">
+                                        <cols>2</cols>
+                                        <rows>1</rows>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxTOP|wxBOTTOM</flag>
+                                            <border>2</border>
+                                            <object class="wxSpinCtrl" 
name="SolveBeginYear">
+                                                <help>Solve beginning 
duration</help>
+                                                <size>50,-1</size>
+                                                <style>wxSP_ARROW_KEYS</style>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxALL</flag>
+                                            <border>4</border>
+                                            <object class="wxStaticText">
+                                                <label>Year</label>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_LEFT|wxALIGN_BOTTOM</flag>
+                                    <border>4</border>
+                                    <object class="wxFlexGridSizer">
+                                        <cols>2</cols>
+                                        <rows>1</rows>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
+                                            <border>4</border>
+                                            <object class="wxSpinCtrl" 
name="SolveBeginAge">
+                                                <help>Solve beginning 
age</help>
+                                                <size>50,-1</size>
+                                                <style>wxSP_ARROW_KEYS</style>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxALL</flag>
+                                            <border>4</border>
+                                            <object class="wxStaticText">
+                                                <label>Age</label>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>4</border>
+                    <object class="wxFlexGridSizer">
+                        <cols>2</cols>
+                        <rows>2</rows>
+                        <object class="sizeritem">
+                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                            <border>4</border>
+                            <object class="wxRadioBox" name="SolveToWhich">
+                                <help>End of solve period (exclusive)</help>
+                                <label>To</label>
+                                <style>wxRA_SPECIFY_COLS</style>
+                                <content>
+                                    <item>Retirement</item>
+                                    <item>Year</item>
+                                    <item>Age</item>
+                                    <item>Maturity</item>
+                                </content>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxBOTTOM</flag>
+                            <border>2</border>
+                            <object class="wxFlexGridSizer">
+                                <cols>1</cols>
+                                <rows>2</rows>
+                                <growablerows>0,1</growablerows>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxBOTTOM</flag>
+                                    <border>2</border>
+                                    <object class="wxFlexGridSizer">
+                                        <cols>2</cols>
+                                        <rows>1</rows>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxTOP|wxBOTTOM</flag>
+                                            <border>2</border>
+                                            <object class="wxSpinCtrl" 
name="SolveEndYear">
+                                                <help>Solve ending 
duration</help>
+                                                <size>50,-1</size>
+                                                <style>wxSP_ARROW_KEYS</style>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxALL</flag>
+                                            <border>4</border>
+                                            <object class="wxStaticText">
+                                                <label>Year</label>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_LEFT|wxALIGN_BOTTOM</flag>
+                                    <border>4</border>
+                                    <object class="wxFlexGridSizer">
+                                        <cols>2</cols>
+                                        <rows>1</rows>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
+                                            <border>4</border>
+                                            <object class="wxSpinCtrl" 
name="SolveEndAge">
+                                                <help>Solve ending age</help>
+                                                <size>50,-1</size>
+                                                <style>wxSP_ARROW_KEYS</style>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxALL</flag>
+                                            <border>4</border>
+                                            <object class="wxStaticText">
+                                                <label>Age</label>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <border>4</border>
+            <object class="wxStaticBoxSizer">
+                <orient>wxVERTICAL</orient>
+                <label>To achieve a goal of</label>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxBOTTOM</flag>
+                    <border>2</border>
+                    <object class="wxFlexGridSizer">
+                        <cols>1</cols>
+                        <growablecols>0</growablecols>
+                        <growablerows>0,1</growablerows>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxLEFT|wxRIGHT</flag>
+                            <border>4</border>
+                            <object class="wxRadioBox" name="SolveTarget">
+                                <help>Target to solve for</help>
+                                <style>wxRA_SPECIFY_COLS</style>
+                                <content>
+                                    <item>Endowment</item>
+                                    <item>Target CSV</item>
+                                    <item>Target NAAR</item>
+                                    <item>CSV = tax basis</item>
+                                    <item>Avoid MEC</item>
+                                </content>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxLEFT|wxRIGHT</flag>
+                            <border>2</border>
+                            <object class="wxFlexGridSizer">
+                                <cols>1</cols>
+                                <rows>2</rows>
+                                <growablecols>0</growablecols>
+                                <object class="sizeritem">
+                                    <flag>wxGROW|wxALL</flag>
+                                    <border>2</border>
+                                    <object class="wxFlexGridSizer">
+                                        <cols>0</cols>
+                                        <rows>1</rows>
+                                        <growablecols>1</growablecols>
+                                        <growablerows>0</growablerows>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxALL</flag>
+                                            <border>2</border>
+                                            <object class="wxStaticText">
+                                                <label>Target amount</label>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            <flag>wxGROW|wxTOP</flag>
+                                            <border>2</border>
+                                            <object class="wxTextCtrl" 
name="SolveTargetValue">
+                                                <help>Target amount</help>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxGROW|wxLEFT|wxRIGHT</flag>
+                                    <border>2</border>
+                                    <object class="wxFlexGridSizer">
+                                        <cols>2</cols>
+                                        <rows>2</rows>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                                            <border>2</border>
+                                            <object class="wxRadioBox" 
name="SolveTgtAtWhich">
+                                                <help>When solve target is to 
be achieved</help>
+                                                <label>At</label>
+                                                
<style>wxRA_SPECIFY_COLS</style>
+                                                <content>
+                                                    <item>Retirement</item>
+                                                    <item>Year</item>
+                                                    <item>Age</item>
+                                                    <item>Maturity</item>
+                                                </content>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxTOP</flag>
+                                            <border>2</border>
+                                            <object class="wxFlexGridSizer">
+                                                <cols>1</cols>
+                                                <rows>2</rows>
+                                                
<growablerows>0,1</growablerows>
+                                                <object class="sizeritem">
+                                                    
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxBOTTOM</flag>
+                                                    <border>2</border>
+                                                    <object 
class="wxFlexGridSizer">
+                                                        <cols>2</cols>
+                                                        <rows>1</rows>
+                                                        <object 
class="sizeritem">
+                                                            
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxTOP|wxBOTTOM</flag>
+                                                            <border>2</border>
+                                                            <object 
class="wxSpinCtrl" name="SolveTargetYear">
+                                                                <help>Duration 
to achieve target surrender value</help>
+                                                                
<size>50,-1</size>
+                                                                
<style>wxSP_ARROW_KEYS</style>
+                                                            </object>
+                                                        </object>
+                                                        <object 
class="sizeritem">
+                                                            
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxALL</flag>
+                                                            <border>2</border>
+                                                            <object 
class="wxStaticText">
+                                                                
<label>Year</label>
+                                                            </object>
+                                                        </object>
+                                                    </object>
+                                                </object>
+                                                <object class="sizeritem">
+                                                    
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxBOTTOM</flag>
+                                                    <border>2</border>
+                                                    <object 
class="wxFlexGridSizer">
+                                                        <cols>2</cols>
+                                                        <rows>1</rows>
+                                                        <object 
class="sizeritem">
+                                                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
+                                                            <border>2</border>
+                                                            <object 
class="wxSpinCtrl" name="SolveTargetAge">
+                                                                <help>Attained 
age to achieve target surrender value</help>
+                                                                
<size>50,-1</size>
+                                                                
<style>wxSP_ARROW_KEYS</style>
+                                                            </object>
+                                                        </object>
+                                                        <object 
class="sizeritem">
+                                                            
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxALL</flag>
+                                                            <border>2</border>
+                                                            <object 
class="wxStaticText">
+                                                                
<label>Age</label>
+                                                            </object>
+                                                        </object>
+                                                    </object>
+                                                </object>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxBOTTOM</flag>
+                    <border>2</border>
+                    <object class="wxFlexGridSizer">
+                        <cols>2</cols>
+                        <rows>0</rows>
+                        <growablecols>0,1</growablecols>
+                        <growablerows>0</growablerows>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALL</flag>
+                            <border>4</border>
+                            <object class="wxRadioBox" 
name="SolveExpenseGeneralAccountBasis">
+                                <help>Expense and mortality basis for 
solve</help>
+                                <label>Basis</label>
+                                <style>wxRA_SPECIFY_COLS</style>
+                                <content>
+                                    <item>Current</item>
+                                    <item>Guaranteed</item>
+                                    <item>Midpoint</item>
+                                </content>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALL</flag>
+                            <border>4</border>
+                            <object class="wxRadioBox" 
name="SolveSeparateAccountBasis">
+                                <help>Separate-account basis for solve</help>
+                                <label>Sep acct rate</label>
+                                <style>wxRA_SPECIFY_COLS</style>
+                                <content>
+                                    <item>Hypothetical</item>
+                                    <item>Zero</item>
+                                    <item>Half of hypothetical</item>
+                                </content>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+    </object>
+</object>
+
+<object class="wxPanel" name="amounts_panel">
+    <object class="wxFlexGridSizer">
+        <cols>1</cols>
+        <rows>2</rows>
+        <growablecols>0</growablecols>
+        <growablerows>1</growablerows>
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <border>4</border>
+            <object class="wxFlexGridSizer">
+                <rows>1</rows>
+                <growablerows>0</growablerows>
+                <growablecols>0,1</growablecols>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxStaticBoxSizer">
+                        <orient>wxVERTICAL</orient>
+                        <label>Table Y factors for payments made by</label>
+                        <object class="sizeritem">
+                            <flag>wxGROW</flag>
+                            <border>4</border>
+                            <object class="wxFlexGridSizer">
+                                <cols>2</cols>
+                                <rows>2</rows>
+                                <growablecols>1</growablecols>
+                                <growablerows>0,1</growablerows>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                                    <border>4</border>
+                                    <object class="wxStaticText">
+                                        <label>Participant</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxGROW|wxLEFT|wxRIGHT|wxTOP</flag>
+                                    <border>2</border>
+                                    <object class="wxTextCtrl" 
name="InsuredPremiumTableFactor">
+                                        <help>Multiple of table used as basis 
for premium calculation</help>
+                                        <size>100,-1</size>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                                    <border>4</border>
+                                    <object class="wxStaticText">
+                                        <label>Sponsor</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxGROW|wxLEFT|wxRIGHT|wxTOP</flag>
+                                    <border>2</border>
+                                    <object class="wxTextCtrl" 
name="CorporationPremiumTableFactor">
+                                        <size>100,-1</size>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxStaticBoxSizer">
+                        <orient>wxVERTICAL</orient>
+                        <label>Salary-based specified amount</label>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALL</flag>
+                            <border>4</border>
+                            <object class="wxFlexGridSizer">
+                                <cols>1</cols>
+                                <growablecols>0</growablecols>
+                                <growablerows>0</growablerows>
+                                <object class="sizeritem">
+                                    <flag>wxGROW|wxALL</flag>
+                                    <border>4</border>
+                                    <object class="wxFlexGridSizer">
+                                        <cols>2</cols>
+                                        <growablecols>1</growablecols>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                                            <border>4</border>
+                                            <object class="wxStaticText">
+                                                <label>Salary multiple </label>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            <flag>wxGROW|wxBOTTOM</flag>
+                                            <border>2</border>
+                                            <object class="wxTextCtrl" 
name="SalarySpecifiedAmountFactor">
+                                                <help>Multiple of salary for 
specified amount calculation</help>
+                                                <size>40,-1</size>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                                            <border>4</border>
+                                            <object class="wxStaticText">
+                                                <label>cap </label>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            <flag>wxGROW|wxBOTTOM</flag>
+                                            <border>2</border>
+                                            <object class="wxTextCtrl" 
name="SalarySpecifiedAmountCap">
+                                                <help>Limit on salary-based 
specified amount</help>
+                                                <size>40,-1</size>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                                            <border>4</border>
+                                            <object class="wxStaticText">
+                                                <label>offset </label>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            <flag>wxGROW</flag>
+                                            <object class="wxTextCtrl" 
name="SalarySpecifiedAmountOffset">
+                                                <help>Amount subtracted from 
salary-based specified amount for group insurance offset</help>
+                                                <size>40,-1</size>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxStaticBoxSizer">
+                        <orient>wxVERTICAL</orient>
+                        <label>First-year extra</label>
+                        <object class="sizeritem">
+                            <flag>wxGROW</flag>
+                            <border>4</border>
+                            <object class="wxFlexGridSizer">
+                                <cols>3</cols>
+                                <growablecols>1,2</growablecols>
+                                <growablerows>0,1,2,3,4</growablerows>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                                    <border>4</border>
+                                    <object class="wxStaticText">
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                                    <border>4</border>
+                                    <object class="wxStaticText">
+                                        <label>Dumpin </label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxGROW|wxLEFT|wxRIGHT|wxTOP</flag>
+                                    <border>2</border>
+                                    <object class="wxTextCtrl" name="Dumpin">
+                                        <help>First-year lump-sum payment 
other than 1035 exchange</help>
+                                        <size>10,-1</size>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                                    <border>4</border>
+                                    <object class="wxStaticText">
+                                        <label>1035</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP</flag>
+                                    <border>4</border>
+                                    <object class="wxStaticText">
+                                        <label>External </label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP</flag>
+                                    <border>4</border>
+                                    <object class="wxStaticText">
+                                        <label>Internal </label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                                    <border>4</border>
+                                    <object class="wxStaticText">
+                                        <label>Amount </label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxGROW|wxLEFT|wxRIGHT|wxBOTTOM</flag>
+                                    <border>2</border>
+                                    <object class="wxTextCtrl" 
name="External1035ExchangeAmount">
+                                        <help>External 1035 exchange 
amount</help>
+                                        <size>10,-1</size>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxGROW|wxLEFT|wxRIGHT|wxBOTTOM</flag>
+                                    <border>2</border>
+                                    <object class="wxTextCtrl" 
name="Internal1035ExchangeAmount">
+                                        <help>Internal 1035 exchange 
amount</help>
+                                        <size>10,-1</size>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                                    <border>4</border>
+                                    <object class="wxStaticText">
+                                        <label>Tax basis </label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxGROW|wxALL</flag>
+                                    <border>2</border>
+                                    <object class="wxTextCtrl" 
name="External1035ExchangeTaxBasis">
+                                        <help>Tax basis for external 1035 
exchange</help>
+                                        <size>10,-1</size>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxGROW|wxALL</flag>
+                                    <border>2</border>
+                                    <object class="wxTextCtrl" 
name="Internal1035ExchangeTaxBasis">
+                                        <help>Tax basis for internal 1035 
exchange</help>
+                                        <size>10,-1</size>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>4</border>
+                                    <object class="wxStaticText">
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_LEFT|wxALIGN_TOP|wxALL</flag>
+                                    <border>2</border>
+                                    <object class="wxCheckBox" 
name="External1035ExchangeFromMec">
+                                        <help>External 1035 exchange is from a 
MEC</help>
+                                        <label>From MEC</label>
+                                        <checked>0</checked>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_LEFT|wxALIGN_TOP|wxALL</flag>
+                                    <border>2</border>
+                                    <object class="wxCheckBox" 
name="Internal1035ExchangeFromMec">
+                                        <help>Internal 1035 exchange is from a 
MEC</help>
+                                        <label>From MEC</label>
+                                        <checked>0</checked>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <border>4</border>
+            <object class="wxFlexGridSizer">
+                <cols>2</cols>
+                <rows>0</rows>
+                <growablecols>1</growablecols>
+                <object class="sizeritem">
+                    <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                    <border>4</border>
+                    <object class="wxStaticText">
+                        <label>Participant payment</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxBOTTOM</flag>
+                    <border>2</border>
+                    <object class="InputSequenceEntry" name="Payment">
+                        <title>Individual payment amount</title>
+                        <help>Individual payment amount, or corridor, glp, 
gsp, minimum, sevenpay, table, target</help>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                    <border>4</border>
+                    <object class="wxStaticText">
+                        <label>Participant mode</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxBOTTOM</flag>
+                    <border>2</border>
+                    <object class="InputSequenceEntry" name="PaymentMode">
+                        <title>Individual payment mode</title>
+                        <help>Individual payment mode: annual, semiannual, 
quarterly, or monthly</help>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                    <border>4</border>
+                    <object class="wxStaticText">
+                        <label>Sponsor payment</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxBOTTOM</flag>
+                    <border>2</border>
+                    <object class="InputSequenceEntry" 
name="CorporationPayment">
+                        <title>Corporation payment amount</title>
+                        <help>Corporation payment amount, or corridor, glp, 
gsp, minimum, sevenpay, table, target</help>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                    <border>4</border>
+                    <object class="wxStaticText">
+                        <label>Sponsor mode</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxBOTTOM</flag>
+                    <border>2</border>
+                    <object class="InputSequenceEntry" 
name="CorporationPaymentMode">
+                        <title>Corporation payment mode</title>
+                        <help>Corporation payment mode: annual, semiannual, 
quarterly, or monthly</help>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                    <border>4</border>
+                    <object class="wxStaticText">
+                        <label>Salary</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxBOTTOM</flag>
+                    <border>2</border>
+                    <object class="InputSequenceEntry" name="ProjectedSalary">
+                        <title>Projected annual salary</title>
+                        <help>Projected annual salary</help>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                    <border>4</border>
+                    <object class="wxStaticText">
+                        <label>Specified amount</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxBOTTOM</flag>
+                    <border>2</border>
+                    <object class="InputSequenceEntry" name="SpecifiedAmount">
+                        <title>Specified amount</title>
+                        <help>Specified amount, or corridor, glp, gsp, 
maximum, salary, sevenpay, target</help>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                    <border>4</border>
+                    <object class="wxStaticText">
+                        <label>Supplemental amount</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxBOTTOM</flag>
+                    <border>2</border>
+                    <object class="InputSequenceEntry" 
name="SupplementalAmount">
+                        <title>Supplemental amount</title>
+                        <help>Supplemental amount, or corridor, glp, gsp, 
maximum, salary, sevenpay, target</help>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                    <border>4</border>
+                    <object class="wxStaticText">
+                        <label>Death benefit option</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW</flag>
+                    <border>2</border>
+                    <object class="InputSequenceEntry" 
name="DeathBenefitOption">
+                        <title>Death benefit option</title>
+                        <help>Death benefit option: a (level), b (increasing), 
rop (return of premium), or mdb (minimum death benefit)</help>
+                    </object>
+                </object>
+            </object>
+        </object>
+    </object>
+</object>
+
+<object class="wxPanel" name="funds_panel">
+    <object class="wxFlexGridSizer">
+        <cols>1</cols>
+        <rows>3</rows>
+        <growablecols>0</growablecols>
+        <growablerows>0</growablerows>
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <border>4</border>
+            <object class="wxFlexGridSizer">
+                <cols>0</cols>
+                <rows>1</rows>
+                <growablecols>0</growablecols>
+                <growablerows>0</growablerows>
+                <object class="sizeritem">
+                    <flag>wxALIGN_LEFT|wxALL</flag>
+                    <border>4</border>
+                    <object class="wxStaticBoxSizer">
+                        <orient>wxHORIZONTAL</orient>
+                        <label>Funds</label>
+                        <object class="sizeritem">
+                            <flag>wxALIGN_TOP|wxLEFT|wxRIGHT|wxBOTTOM</flag>
+                            <border>4</border>
+                            <object class="wxFlexGridSizer">
+                                <cols>0</cols>
+                                <rows>1</rows>
+                                <growablecols>0</growablecols>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_LEFT|wxALIGN_TOP|wxLEFT|wxBOTTOM</flag>
+                                    <border>4</border>
+                                    <object class="wxRadioBox" 
name="FundChoiceType">
+                                        <help>Fund allocation: for 100% 
general account, pick "Choose funds"; for 100% separate account, pick "Average 
fund"</help>
+                                        <style>wxRA_SPECIFY_COLS</style>
+                                        <content>
+                                            <item>Average fund</item>
+                                            <item>Override fund</item>
+                                            <item>Choose funds</item>
+                                        </content>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM</flag>
+                                    <border>2</border>
+                                    <object class="wxFlexGridSizer">
+                                        <cols>2</cols>
+                                        <rows>1</rows>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                                            <border>2</border>
+                                            <object class="wxTextCtrl" 
name="InputFundManagementFee">
+                                                <help>Investment management 
fee for custom fund</help>
+                                                <size>50,-1</size>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
+<!--
+                                <object class="sizeritem">
+                                    <flag>wxGROW|wxALL</flag>
+                                    <border>4</border>
+                                    <object class="wxListBox" 
name="FundAllocations">
+                                        <size>200,-1</size>
+                                        <style>wxLB_SINGLE|wxLB_SORT</style>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM</flag>
+                                    <border>4</border>
+                                    <object class="wxFlexGridSizer">
+                                        <cols>5</cols>
+                                        <rows>2</rows>
+                                        <growablecols>3</growablecols>
+                                        <growablerows>0,1</growablerows>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                                            <border>4</border>
+                                            <object class="wxStaticText">
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM</flag>
+                                            <border>2</border>
+                                            <object class="wxStaticText">
+                                                <label>Change:</label>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_TOP|wxLEFT|wxTOP|wxBOTTOM</flag>
+                                            <border>2</border>
+                                            <object class="wxTextCtrl" 
name="SelectedFund">
+                                                <style>wxSUNKEN_BORDER</style>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_TOP|wxALL</flag>
+                                            <border>2</border>
+                                            <object class="wxTextCtrl" 
name="SelectedFundAllocation">
+                                                <size>50,-1</size>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM</flag>
+                                            <border>2</border>
+                                            <object class="wxStaticText">
+                                                <label>%</label>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                                            <border>4</border>
+                                            <object class="wxStaticText">
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM</flag>
+                                            <border>4</border>
+                                            <object class="wxStaticText">
+                                                <label>Default:</label>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_TOP|wxALL</flag>
+                                            <border>2</border>
+                                            <object class="wxTextCtrl" 
name="DefaultFund">
+                                                <style>wxSUNKEN_BORDER</style>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem">
+                                            
<flag>wxALIGN_LEFT|wxALIGN_TOP|wxLEFT|wxTOP|wxBOTTOM</flag>
+                                            <border>2</border>
+                                            <object class="wxTextCtrl" 
name="DefaultFundAllocation">
+                                                <size>50,-1</size>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
+-->
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <border>4</border>
+            <object class="wxFlexGridSizer">
+                <cols>1</cols>
+                <growablecols>0</growablecols>
+                <growablerows>1</growablerows>
+                <object class="sizeritem">
+                    <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                    <border>4</border>
+                    <object class="wxStaticText">
+                        <label>Rates by account:</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT</flag>
+                    <border>8</border>
+                    <object class="wxCheckBox" name="UseCurrentDeclaredRate">
+                        <help>Use current general-account declared rate</help>
+                        <label>Use current general-account declared 
rate</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxFlexGridSizer">
+                        <cols>2</cols>
+                        <rows>0</rows>
+                        <growablecols>0</growablecols>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALL</flag>
+                            <border>4</border>
+                            <object class="wxFlexGridSizer">
+                                <cols>2</cols>
+                                <rows>0</rows>
+                                <growablecols>1</growablecols>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                                    <border>2</border>
+                                    <object class="wxStaticText">
+                                        <label>General</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                                    <border>2</border>
+                                    <object class="InputSequenceEntry" 
name="GeneralAccountRate">
+                                        <title>General-account interest 
rate</title>
+                                        <help>General-account (non-loaned) 
interest rate</help>
+                                        <size>-1,22</size>
+                                        <style>wxTE_LEFT</style>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                                    <border>2</border>
+                                    <object class="wxStaticText">
+                                        <label>Separate</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxGROW|wxTOP|wxALL</flag>
+                                    <border>2</border>
+                                    <object class="InputSequenceEntry" 
name="SeparateAccountRate">
+                                        <title>Separate-account interest 
rate</title>
+                                        <help>Separate-account interest 
rate</help>
+                                        <size>-1,22</size>
+                                        <style>wxTE_LEFT</style>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+    </object>
+</object>
+
+<object class="wxPanel" name="income_panel">
+    <object class="wxFlexGridSizer">
+        <cols>1</cols>
+        <rows>2</rows>
+        <growablecols>0</growablecols>
+        <growablerows>1</growablerows>
+        <object class="sizeritem">
+            <flag>wxALIGN_LEFT|wxALIGN_TOP|wxALL</flag>
+            <border>4</border>
+            <object class="wxCheckBox" name="WithdrawToBasisThenLoan">
+                <help>Switch withdrawals to loans after tax basis has been 
recovered</help>
+                <help>Switch withdrawals to loans after tax basis has been 
recovered</help>
+                <label>Change withdrawals to loans after basis</label>
+                <checked>0</checked>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <border>4</border>
+            <object class="wxFlexGridSizer">
+                <cols>2</cols>
+                <rows>0</rows>
+                <growablecols>1</growablecols>
+                <object class="sizeritem">
+                    <flag>wxALIGN_RIGHT|wxALIGN_TOP|wxRIGHT</flag>
+                    <border>4</border>
+                    <object class="wxStaticText">
+                        <label>Withdrawal</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxBOTTOM</flag>
+                    <border>2</border>
+                    <object class="InputSequenceEntry" name="Withdrawal">
+                        <title>Withdrawal amount</title>
+                        <help>Withdrawal amount</help>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+                    <border>4</border>
+                    <object class="wxStaticText">
+                        <label>Loan</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxGROW</flag>
+                    <border>2</border>
+                    <object class="InputSequenceEntry" name="NewLoan">
+                        <title>Loan amount</title>
+                        <help>Loan amount</help>
+                    </object>
+                </object>
+            </object>
+        </object>
+    </object>
+</object>
+
+<object class="wxPanel" name="riders_panel">
+    <object class="wxFlexGridSizer">
+        <cols>1</cols>
+        <rows>0</rows>
+        <growablerows>0,1,2,3</growablerows>
+        <object class="sizeritem">
+            <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+            <border>4</border>
+            <object class="wxCheckBox" name="AccidentalDeathBenefit">
+                <help>Accidental death benefit</help>
+                <label>Elect accidental death and dismemberment</label>
+                <checked>0</checked>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+            <border>4</border>
+            <object class="wxCheckBox" name="WaiverOfPremiumBenefit">
+                <help>Waiver</help>
+                <label>Elect waiver of premium</label>
+                <checked>0</checked>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+            <border>2</border>
+            <object class="wxFlexGridSizer">
+                <rows>1</rows>
+                <object class="sizeritem">
+                    <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxCheckBox" name="ChildRider">
+                        <help>Child rider</help>
+                        <label>Elect child rider</label>
+                        <checked>0</checked>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxStaticText">
+                        <label>Amount</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxTextCtrl" name="ChildRiderAmount">
+                        <help>Child rider amount</help>
+                        <size>100,-1</size>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+            <border>2</border>
+            <object class="wxFlexGridSizer">
+                <rows>1</rows>
+                <object class="sizeritem">
+                    <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxCheckBox" name="SpouseRider">
+                        <help>Spouse rider</help>
+                        <label>Elect spouse rider</label>
+                        <checked>0</checked>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxStaticText">
+                        <label>Amount</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxTextCtrl" name="SpouseRiderAmount">
+                        <help>Spouse rider amount</help>
+                        <size>100,-1</size>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM</flag>
+                    <border>2</border>
+                    <object class="wxStaticText">
+                        <label>Age</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxSpinCtrl" name="SpouseIssueAge">
+                        <help>Spouse insurance age on date of issue</help>
+                        <style>wxSP_ARROW_KEYS</style>
+                    </object>
+                </object>
+            </object>
+        </object>
+    </object>
+</object>
+
+<object class="wxPanel" name="names_panel">
+    <object class="wxFlexGridSizer">
+        <cols>1</cols>
+        <growablecols>0</growablecols>
+        <growablerows>0,1,2</growablerows>
+        <!-- insured -->
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <object class="wxStaticBoxSizer">
+                <orient>wxVERTICAL</orient>
+                <label>Participant</label>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxFlexGridSizer">
+                        <cols>2</cols>
+                        <growablecols>1</growablecols>
+                        <vgap>2</vgap>
+                        <hgap>4</hgap>
+                        <object class="sizeritem">
+                            <flag>wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxStaticText">
+                                <label>Name</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxTextCtrl" name="InsuredName">
+                                <help>Insured full name</help>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxStaticText">
+                                <label>Address</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxTextCtrl" name="Address">
+                                <help>Insured street address</help>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxStaticText">
+                                <label>City</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW</flag>
+                            <object class="wxBoxSizer">
+                                <orient>wxHORIZONTAL</orient>
+                                <object class="sizeritem">
+                                    <option>1</option>
+                                    <flag>wxALIGN_CENTER_VERTICAL</flag>
+                                    <object class="wxTextCtrl" name="City">
+                                        <help>Insured city</help>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>8</border>
+                                    <object class="wxStaticText">
+                                        <label>State</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>2</border>
+                                    <object class="wxComboBox" name="State">
+                                        <help>Insured state</help>
+                                        
<style>wxCB_DROPDOWN|wxCB_READONLY</style>
+                                        
<content><item>MM</item><item>WW</item></content>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>8</border>
+                                    <object class="wxStaticText">
+                                        <label>Zip</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>2</border>
+                                    <object class="wxTextCtrl" name="ZipCode">
+                                        <help>Insured ZIP code</help>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxStaticText">
+                                <label>Employee Class</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxTextCtrl" name="EmployeeClass">
+                                <help>Employee Class</help>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <!-- corporation -->
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <object class="wxStaticBoxSizer">
+                <orient>wxVERTICAL</orient>
+                <label>Sponsor</label>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxFlexGridSizer">
+                        <cols>2</cols>
+                        <growablecols>1</growablecols>
+                        <vgap>2</vgap>
+                        <hgap>4</hgap>
+                        <object class="sizeritem">
+                            <flag>wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxStaticText">
+                                <label>Name</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxTextCtrl" name="CorporationName">
+                                <help>Corporation name</help>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxStaticText">
+                                <label>Address</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxTextCtrl" 
name="CorporationAddress">
+                                <help>Corporation street address</help>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxStaticText">
+                                <label>City</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW</flag>
+                            <object class="wxBoxSizer">
+                                <orient>wxHORIZONTAL</orient>
+                                <object class="sizeritem">
+                                    <option>1</option>
+                                    <flag>wxALIGN_CENTER_VERTICAL</flag>
+                                    <object class="wxTextCtrl" 
name="CorporationCity">
+                                        <help>Corporation city</help>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>8</border>
+                                    <object class="wxStaticText">
+                                        <label>State</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>2</border>
+                                    <object class="wxComboBox" 
name="CorporationState">
+                                        <help>Corporation state</help>
+                                        
<style>wxCB_DROPDOWN|wxCB_READONLY</style>
+                                        
<content><item>MM</item><item>WW</item></content>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>8</border>
+                                    <object class="wxStaticText">
+                                        <label>Zip</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>2</border>
+                                    <object class="wxTextCtrl" 
name="CorporationZipCode">
+                                        <help>Corporation ZIP code</help>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <!-- agent -->
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <object class="wxStaticBoxSizer">
+                <orient>wxVERTICAL</orient>
+                <label>Agent</label>
+                <object class="sizeritem">
+                    <flag>wxGROW|wxALL</flag>
+                    <border>2</border>
+                    <object class="wxFlexGridSizer">
+                        <cols>2</cols>
+                        <growablecols>1</growablecols>
+                        <vgap>2</vgap>
+                        <hgap>4</hgap>
+                        <object class="sizeritem">
+                            <flag>wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxStaticText">
+                                <label>Name</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxTextCtrl" name="AgentName">
+                                <help>Agent full name</help>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxStaticText">
+                                <label>Address</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW|wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxTextCtrl" name="AgentAddress">
+                                <help>Agent street address</help>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxALIGN_CENTER_VERTICAL</flag>
+                            <object class="wxStaticText">
+                                <label>City</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxGROW</flag>
+                            <object class="wxBoxSizer">
+                                <orient>wxHORIZONTAL</orient>
+                                <object class="sizeritem">
+                                    <option>1</option>
+                                    <flag>wxALIGN_CENTER_VERTICAL</flag>
+                                    <object class="wxTextCtrl" 
name="AgentCity">
+                                        <help>Agent city</help>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>8</border>
+                                    <object class="wxStaticText">
+                                        <label>State</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>2</border>
+                                    <object class="wxComboBox" 
name="AgentState">
+                                        <help>Agent state</help>
+                                        
<style>wxCB_DROPDOWN|wxCB_READONLY</style>
+                                        
<content><item>MM</item><item>WW</item></content>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>8</border>
+                                    <object class="wxStaticText">
+                                        <label>Zip</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>2</border>
+                                    <object class="wxTextCtrl" 
name="AgentZipCode">
+                                        <help>Agent ZIP code</help>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>8</border>
+                                    <object class="wxStaticText">
+                                        <label>Phone</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>2</border>
+                                    <object class="wxTextCtrl" 
name="AgentPhone">
+                                        <help>Agent telephone number</help>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>8</border>
+                                    <object class="wxStaticText">
+                                        <label>Id</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+                                    <border>2</border>
+                                    <object class="wxTextCtrl" name="AgentId">
+                                        <help>Agent identification code</help>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+    </object>
+</object>
+
+<object class="wxDialog" name="dialog_containing_notebook">
+    <title>Let me illustrate...</title>
+    <style>wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU</style>
+    <exstyle>wxDIALOG_EX_CONTEXTHELP|wxWS_EX_VALIDATE_RECURSIVELY</exstyle>
+    <centered>1</centered>
+    <object class="wxFlexGridSizer">
+        <cols>1</cols>
+        <rows>0</rows>
+        <growablecols>0</growablecols>
+        <growablerows>0</growablerows>
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <border>4</border>
+            <object class="wxNotebook" name="input_notebook">
+                <object class="notebookpage">
+                    <label>Plan</label>
+                    <object_ref ref="plan_panel"/>
+                </object>
+                <object class="notebookpage">
+                    <label>Participant</label>
+                    <object_ref ref="participant_panel"/>
+                </object>
+                <object class="notebookpage">
+                    <label>Solve</label>
+                    <object_ref ref="solve_panel"/>
+                </object>
+                <object class="notebookpage">
+                    <label>Amounts</label>
+                    <object_ref ref="amounts_panel"/>
+                </object>
+                <object class="notebookpage">
+                    <label>Funds</label>
+                    <object_ref ref="funds_panel"/>
+                </object>
+                <object class="notebookpage">
+                    <label>Income</label>
+                    <object_ref ref="income_panel"/>
+                </object>
+                <object class="notebookpage">
+                    <label>Riders</label>
+                    <object_ref ref="riders_panel"/>
+                </object>
+                <object class="notebookpage">
+                    <label>Names</label>
+                    <object_ref ref="names_panel"/>
+                </object>
+            </object>
+        </object>
+        <object class="sizeritem">
+            <flag>wxGROW|wxALL</flag>
+            <border>4</border>
+            <object class="wxFlexGridSizer">
+                <cols>2</cols>
+                <growablecols>0</growablecols>
+                <growablerows>0</growablerows>
+                <object class="sizeritem">
+                    <border>4</border>
+                    <flag>wxGROW|wxRIGHT</flag>
+                    <object class="wxStaticText" name="diagnostics">
+                        <style>wxSUNKEN_BORDER|wxST_NO_AUTORESIZE</style>
+                        <label>[diagnostics]</label>
+                    </object>
+                </object>
+                <object class="sizeritem">
+                    <flag>wxALIGN_RIGHT</flag>
+                    <object class="wxBoxSizer">
+                        <orient>wxVERTICAL</orient>
+                        <object class="sizeritem">
+                            <flag>wxALL</flag>
+                            <object class="wxButton" name="wxID_OK">
+                                <label>OK</label>
+                                <default>1</default>
+<!-- WX !! 'default' seems not to work all the time, e.g. when a
+notebook panel contains only checkboxes.
+-->
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxALL</flag>
+                            <object class="wxButton" name="wxID_CANCEL">
+                                <label>Cancel</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxALL</flag>
+                            <object class="wxButton" name="wxID_HELP">
+                                <label>Help</label>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+    </object>
+</object>
+
+</resource>
diff --git a/stratified_charges.cpp b/stratified_charges.cpp
index 34ef1fc..ad23a1d 100644
--- a/stratified_charges.cpp
+++ b/stratified_charges.cpp
@@ -168,7 +168,7 @@ stratified_charges::stratified_charges()
     ascribe_members();
 }
 
-stratified_charges::stratified_charges(std::string const& filename)
+stratified_charges::stratified_charges(fs::path const& filename)
 {
     ascribe_members();
     load(filename);
diff --git a/stratified_charges.hpp b/stratified_charges.hpp
index 4cdde13..3cfc85d 100644
--- a/stratified_charges.hpp
+++ b/stratified_charges.hpp
@@ -25,10 +25,13 @@
 #include "config.hpp"
 
 #include "any_member.hpp"
+#include "cache_file_reads.hpp"
 #include "mc_enum_type_enums.hpp"
 #include "so_attributes.hpp"
 #include "xml_serializable.hpp"
 
+#include <boost/filesystem/path.hpp>
+
 #include <string>
 #include <vector>
 
@@ -97,13 +100,14 @@ class LMI_SO stratified_entity final
 /// Rates that depend upon the amount they're multiplied by.
 
 class LMI_SO stratified_charges final
-    :public  xml_serializable  <stratified_charges>
-    ,public  MemberSymbolTable <stratified_charges>
+    :public xml_serializable  <stratified_charges>
+    ,public MemberSymbolTable <stratified_charges>
+    ,public cache_file_reads  <stratified_charges>
 {
     friend class TierDocument;
 
   public:
-    stratified_charges(std::string const& filename);
+    explicit stratified_charges(fs::path const& filename);
     stratified_charges(stratified_charges const&);
     ~stratified_charges() override = default;
 
diff --git a/verify_products.cpp b/verify_products.cpp
index 83c4df3..5c2fbc0 100644
--- a/verify_products.cpp
+++ b/verify_products.cpp
@@ -77,8 +77,7 @@ product_verifier::product_verifier
     :product_name_ {product_name}
     ,gender_str_   {gender_str}
     ,smoking_str_  {smoking_str}
-//  ,p_            (product_name)
-    ,p_            
(*product_data::read_via_cache(product_data::actual_filename(product_name)))
+    ,p_            
(*product_data::read_via_cache(filename_from_product_name(product_name)))
     ,gender_       {mce_gender (gender_str ).value()}
     ,smoking_      {mce_smoking(smoking_str).value()}
     ,db0_
diff --git a/version.hpp b/version.hpp
index 770587f..83dd40d 100644
--- a/version.hpp
+++ b/version.hpp
@@ -22,6 +22,6 @@
 
 #include "config.hpp"
 
-#define LMI_VERSION "20210115T1908Z"
+#define LMI_VERSION "20210122T1709Z"
 
 #endif // version_hpp



reply via email to

[Prev in Thread] Current Thread [Next in Thread]