text:
Home/Business/What Early Drafts of Slaughterhouse-Five Reveal About Kurt Vonnegut's Struggles
What Early Drafts of Slaughterhouse-Five Reveal About Kurt Vonnegut's Struggles
The first chapter Slaughterhouse-Five, Kurt Vonnegut's 1969 anti-war masterpiece about a hapless American soldier who becomes "unstuck in time," the author indicates that he wrote more than five thousand pages by 1965. Before he arrived at the final draft, he had already thrown out all his pages. There are approximately five hundred pages in his archives at the Indiana Lilly Library. Slaughterhouse-Five Drafts. In tracing Vonnegut's 23-year crusade to write his most famous novel, I sought to pair his literary struggle with his personal development from his experiences as a soldier during World War II.
It is difficult to determine the sequence of these early versions, but, as a whole, they demonstrate Vonnegut's creative progress toward writing about his experience in Dresden (where he was a prisoner of war after being captured by German forces during the Battle of the Bulge), a subject he, for the first time, put in the first person in one of his novels when he added an introduction for the 1966 reissue of Mother Night. "135,000 Hansels and Gretels had been baked like gingerbread men," he writes darkly of the firebombing. (Vonnegut never revised his reliance on disgraced historian David Irving's discredited tally despite the number being corrected to approximately 25,000 killed by more authoritative sources. "Does it matter?" That's what Vonnegut told Marc Leeds, author of The Vonnegut EncyclopediaIt is. "If I had been born in Germany, I suppose I would have been a Nazi, bopping Jews and gypsies and Poles around, leaving boots sticking out of snowbanks, warming myself with my secretly virtuous insides. So it goes." This is also the first time he used the famous tagline he would go on to repeat throughout Slaughterhouse-Five
The introduction addresses Mother Night's general subject of ambiguity and its tone of absurdity, but the author's first-person reflections on his connection to the material is incongruous with the fictional tale that follows. Nowhere else does the novel make reference to the author's military experience, and by doing so it effectively reframes the story. Vonnegut's upcoming Dresden novel was clearly gestating. And it was the beginning of Vonnegut's signature approach to anchoring his future novels with introductions where Vonnegut, the first-person author, speaks to the reader.
There are two Early Access Points at the Lilly Library Slaughterhouse These attempts are quite different to the end book. One, with the title "Magic Fingers," is about a character who experienced the Dresden bombing, who visits a friend named Bernard O'Hare during the World's Fair and is fixated on the mechanical beds named in the title. Another version, which is over 130 pages long and has very little to do with the storyline of this book. Slaughterhouse but centers on a character named Billy Pilgrim who is a Pontiac car salesman in the Midwest (glimmers of 1973's Breakfast of Champions (available here), and who saw the bombardment of Dresden. The story, which tells of Pilgrim's relationship with a gay lodger in his home who sells washing machines, doesn't have much dramatic pull.
"I was a hack. I'd write anything to make money, you know," Vonnegut later wrote in Without a Country, a Man is a Man. "And what the hell, I'd seen this thing, I'd been through it, and so I was going to write a hack book about Dresden." Vonnegut found much glee in disparaging himself, especially in print.
"I tried," he added. "But I just couldn't get it right. I kept writing crap."
He's not kidding. I find myself returning to the discarded drafts. He really did write some toilet paper–worthy material. No judgments. This is where I will need your support. I am going to trust that you and I can maintain two potentially inconsistent thought processes in our big brains—appreciate Slaughterhouse-Five as it is written and also ferret around how Vonnegut wrote it—without suffering from cognitive dissonance. You might lose a passion for the book. Or a lack of respect for their creator. Although he may be a gifted writer, it was difficult to create a style that seemed natural and effortless. All those drafts are proof. Vonnegut worked tirelessly to make accessibility an art form.
Author and Vonnegut fanboy Steve Almond has worried that it may be "dirty pool to go mucking through his early efforts," but Almond does it anyway in his long essay, "Everything was Beautiful and Nothing Hurt." I do, too. The book, and also the man are important to us. We might be able understand our own behavior if this is possible. Almond also writes, "Writers evolve simply because they tire of their own mistakes." I want to see that evolution.
Vonnegut thought about whether to write the story with a less harsh view of war and more financial motivations, even as late October 1966. Knox Burger, his friend and editor at the time, wrote that Vonnegut had spoken to a Los Angeles literary agent who encouraged him to play Kirk Douglas' role in his movie adaptation. But it didn't work, he wrote, half ruefully, "because the war I saw wasn't really that way. It seems that I will remain with fine arts. Maybe I'll get the Nobel Peace Prize, which is 60 G's."
You can choose from a variety of Slaughterhouse-Five versions that appear to be much closer to the final book—with no less than eighteen different openings. Harold Moon, David McSwan and Billy Pilgrim are the most common names for the lead character. In some, a different character, the mother of a dead POW, challenges the narrator about glorifying war and refers to soldiers as "babies."
There are also versions that include an O'Hare son who is going to fight in Vietnam and one where Billy Pilgrim is gay. He constantly wavers on calling the first section a "preface" or "chapter one."
Vonnegut submitted his final draft, less then ten months after returning from Dresden on a research visit. Slaughterhouse FIVEIt was. Weeks before, he had mocked his effort when he wrote in a letter to Scholes, "It sure has been hard. It isn't very long. From now on I am going to follow familiar models and make a lot of dough."
Vonnegut's book editor Seymour Lawrence was known to have had a very light touch as an editor. Jerome Klinkowitz (author of several books on Vonnegut) believes Lawrence may not have made any changes to the manuscript beyond a semicolon. With the publication date set for March 1969, Vonnegut's popularity was cresting. Lawrence helped to publish more than 200 000 mass-market paperbacks of Vonnegut's book. The Sirens Of Titan The 150,000 Cat's Cradle There were also paperbacks. In that month hundreds of American troops died in a North Vietnamese invasion, the biggest loss of American lives during wartime. An emerging author with a young following was able to publish an anti-war novel at the right time.
Much later, explaining how he was finally able to complete his Dresden novel after more than two decades, Vonnegut wrote, "I think the Vietnam War freed me and other writers, because it made our leadership and our motives seem so scruffy and essentially stupid. It was finally possible to talk about what we did the Nazis. The truth was that I did not see it, but I could report what I saw. It made war look awful. You know, the truth can be really powerful stuff."
Vonnegut insists that he does not believe his wartime experiences have had any effect on him. "If I told him he had PTSD, he'd tell me to go soak my head," says his son Mark Vonnegut.
Vonnegut never spoke out or wrote about the emotions he felt in wartime. The closest we come to hearing from him may be in the letter written by his uncle Alex in 1945, when the young Vonnegut tearfully exclaimed, "The sons of bitches! The sons of bitches!" after telling his family the story of his fellow American POW Michael Palaia, whom he eventually based the character Edgar Derby on.
In one unusually candid interview in 1996, Vonnegut admitted, "I saw a hell of a lot of death, and I saw a hell of a lot of it during the Battle of the Bulge when my division was wiped out. Then, in Dresden, I witnessed a mountain full of people dead. And that makes you thoughtful."
You are thoughtfulIt is. This is a great understatement. But just as this suggests he is admitting something intimately, painfully personal, Vonnegut adds, "It . Made. . Made. Made. You can think about. You should think about It is. . Death. I also said that it was something I would never have missed. It was an amazing adventure. As long as you keep your eyes open, it was an amazing adventure. [are] going to see something, see something really thought provoking."
Vonnegut refused to be put in the same boxes as others. And I believe he didn't want to be pinned down as another writer traumatized by war. "I suppose you'd think so, because that's the cliché," he told Playboy In 1973. "The importance of Dresden in my life has been considerably exaggerated because my book about it became a bestseller. If the book hadn't been a bestseller, it would seem like a very minor experience in my life. And I don't think peoples' lives are changed by short term events like that. Dresden was astonishing, but experiences can be astonishing without changing you."
Calling what he witnessed during the war a "minor experience" seems like Vonnegut doth protest too much. And there is plenty of clinical evidence that a "short term" experience, if it is harrowing enough, can in fact forever change a person. But Vonnegut's position remained consistent. He wrote in 1981's Palm Sunday: "Being present at the destruction of Dresden has affected my character far less than the death of my mother, the adopting of my sister's children, the sudden realization that those children and my own were no longer dependent on me, the breakup of my marriage, and so on."
The following is an adaption of the text from the newly published book The Writer's Crusade: Kurt Vonnegut and the Many Lives of Slaughterhouse-FiveAbrams Press published the book.


text:
This next-generation Tamil soundtrack is packed with rap, rock and romance.
Kabali (Original Motion Picture Soundtrack) - EP Santhosh Narayanan
Ulagam Oruvanukka
Ananthu, Santhosh Narayanan & Gaana Bala
Maya Nadhi
Ananthu, Pradeep Kumar & Swetha Mohan
Veera Thurandhara
Gaana Bala, Lawrence R & Pradeep Kumar
Vaanam Paarthen
Pradeep Kumar
Neruppu Da
Arunraja Kamaraj
℗ 2016 Think Music
More By Santhosh Narayanan
Bairavaa (Original Motion Picture Soundtrack) - EP
Kaala (Original Motion Picture Soundtrack)
Irudhi Suttru (Original Motion Picture Soundtrack) - EP
Kodi (Original Motion Picture Soundtrack) - EP
Kabali (Original Background Score)
Madras (Original Motion Picture Soundtrack)
Hits of 2016, Vol. 2
O Kadhal Kanmani (Original Motion Picture Soundtrack)
A. R. Rahman
Remo (Original Motion Picture Soundtrack)
Iru Mugan (Original Motion Picture Soundtrack) - EP
Theri (Original Motion Picture Soundtrack)
G. V. Prakash Kumar
Thani Oruvan (Original Motion Picture Soundtrack) - EP
Hiphop Tamizha

redpajama_set_name: RedPajamaCommonCrawl


text:
Gidget Chihuahua Joins List of Unfortunate June/July Celebrity Deaths
Gidget the Chihuahua, whose Taco Bell commercials made her a star, has died. She was 15.
The owner of Studio Animal Services in Castaic says Gidget suffered a massive stroke late Tuesday at her trainer's home in Santa Clarita and had to be euthanized.
Gidget was the sassy mascot in Taco Bell commercials from 1997 to 2000. While other dogs had bit parts, it was her bug-eyed, big-eared face that was seen pronouncing "Yo quiero Taco Bell," Spanish for "I want Taco Bell," in a male voice dubbed by Argentine actor Carlos Alazraqui. A few years later, Alazraqui landed the role for which he is best known: Deputy James Garcia on Comedy Central's "Reno 911!" , Los Angeles Times reports.
However, Gidget the chihuahua joined the list of unfortunate June/July celebrity deaths.
After suffering from a fatal stroke, he died at age 15.
Gidget first appeared in the late nineties on for a Taco Bell ad. Although Gidget's commercials were cut suddenly when Hispanic groups complained of the stereotype of using a Mexican breed dog for the commercials, his face has become synonymous to tacos , CDInsight reports.
"She made so many people happy," said Sue Chipperton, Gidget's trainer.
Gidget became Taco Bell's spokesanimal in 1997, and her commercials ran until 2000. In addition to her Taco Bell gig, she appeared in a commercial for the '90s edition of Trivial Pursuit and played Bruiser's mom in "Legally Blonde 2: Red, White & Blonde.", Chicago Tribune reports.


text:
Today's Top Tune
Davie: Testify
A free weekday download of standout songs, including advance releases, exclusive live tracks recorded at KCRW, remixes, and an introduction to new artists on our radar.
Publié le vendredi 05 janvier 2018 à 09:00 par webmaster@kcrw.org (KCRW)
"Testify" is driven by handclaps, a bouncy bass line, and pure joy.
KCRW 2023
Saeptem » Podcast
Music, writing and stuff
Human's Show.
Blues, Rock, Everything In Between.
"The Human," has been hosting his podcast for 11 years. It is always highly ranked in the blues rock genre. He brings alot of experience in music to his show. He played in rock bands in high school in the late 60's. He had and has an insatiable thirst for music, so much so that he got the nickname "The Human," in the mid-70's. He is also a singer-songwriter that has recorded 6 CD's and 2 download only releases of his own music. If ya dig good real music from many era's check out Human's Podcast. Think old school FM Radio.
CoconMix
Podcast by Les Cocons Électroniques
Echo Valley: The Original Bubblegum Music Podcast
We celebrate the best and grooviest sounds of bubblegum pop music from the 60's and 70's like The Archies, Partridge Family, The Brady Bunch, Osmonds, Monkees and Josie & the Pussycats!
Stray Kids : STAYFM
Hello Stay ! Here you going to find all the SKZ-PLAYER, SKZ-RECORD, 3RACHA's songs and other things that aren't in spotify.
RADIO MUTATION
A Classic Punk & Wave Podcast


You can view the whole list of geodata repositories here. Unfortunately the list is not editable online so you have to contact Karen via Skype or other methods as she wrote in the document itself. So enjoy this catalogue and send her your additional links.


Prospective students, who have not yet been admitted to FAU and/or are not currently declared as business majors, may meet with an advisor on a walk-in basis (no appt. needed). Walk in advising days are usually every Tuesday and Thursday from 8:30am to 4pm. Please contact us to verify our walk in times for the date that you are interested in.
For more information on the Fully Online Classes, please contact our office via phone at (561) 297-3688 (dial "6") or send us an email with questions to cobadvising@fau.edu.
Exit I-95 at Glades (Exit 45) / (Exit 75) from the Turnpike. Head EAST on Glades to 10th/Broward Ave (the first and main entrance to FAU). Turn left into Campus and continue on Broward Ave until the road curves right . Make the first RIGHT, after the road curves, into the parking lots adjacent to the College of Business.
Enter through the main entrance of College of Business. Make a left in the Sean Stein Pavilion. Walk into Fleming West and our offices will be on the left hand side.


Bacon off to Fast Start in 2019 – Locks into Chili Bowl Championship Feature!
Sunshine's Pursuit of Golden Driller Begins on Tuesday!
VIROC VIII Field Set for Tuesday's Chili Bowl Opener!
Hagen Holds on to Midget Power Rankings Lead!
A Ton of Turkey Night Stuff(ing) on The PAS Twitter page … Check It Out!


text:
Bleeding Edge
Teeka Tiwari
It's Time to Look Beyond Bitcoin
Teeka Tiwari | Mar 30, 2021 | Bleeding Edge
With Bitcoin reaching a high of $55,000, regular investors have missed their chance at locking in exponential gains. But that doesn't mean retail investors don't have the chance to take profits from the crypto space…
Will Bitcoin Hit $500,000?
Teeka Tiwari predicted bitcoin would become a bedrock reserve asset for institutional investors back when many thought it was...
Tesla's Bitcoin Investment Is Bullish for Crypto
Teeka Tiwari | Feb 24, 2021 | Bleeding Edge
Tesla's investment is great for bitcoin… But what if you missed out? Well, retail investors can still capitalize on...
How You Can Collect "Royalties" From Technology
Teeka Tiwari has been researching a new type of income stream only a few folks know about. It's a...
How Anyone Can Turn $100 Into $150,000
Teeka Tiwari | Jan 23, 2021 | Bleeding Edge
To create enduring wealth, you need a diversified approach. These are words Wall Street legend Teeka Tiwari lives by...
Cryptos Investing Can Help You Achieve Your Dream Life
Teeka Tiwari | Nov 11, 2020 | Bleeding Edge
It's said that luck is what happens when preparation meets opportunity... And when it comes to making money from...
What You Can Learn From "Losing" Trades
If you get ahead of this opportunity, it could completely change your life. But if you miss out, that's...
Domestic/International
Billing FAQ
Join The Bleeding Edge
The Bleeding Edge is the only free newsletter written by Silicon Valley insider Jeff Brown. Discover the technology that's shaping our future, and the investing trends that need to be on your radar…
Protected by copyright laws of the United States and international treaties. This website may only be used pursuant to the subscription agreement and any reproduction, copying, or redistribution (electronic or otherwise, including on the World Wide Web), in whole or in part, is strictly prohibited without the express written permission of Brownstone Research.
©2022 Brownstone Research. All Rights Reserved.


CIs there a way to invite users by "private" link rather than email?
Collecting emails and sending invites is a hassle. I'd much rather have a way to let people join by publicizing a link that authorized them. Does this exist?
Re: CIs there a way to invite users by "private" link rather than email?
Currently invite by link does not exist. Each invitation has a unique authorization token. If you'd like, you can create an idea/feature request in this space and our Product team will look at the feasibility of making such an enhancement.


text:
.. _service_element_facts:

service_element_facts - Facts about service elements in the SMC
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

.. versionadded:: 2.5

.. contents::
   :local:
   :depth: 2

Synopsis
--------

* Service elements can be used as references in many areas of the configuration. This fact module provides the ability to retrieve information related to elements and their values.

Requirements (on host that executes module)
-------------------------------------------

  * smc-python

Options
-------

.. raw:: html

    parameter
    required
    default
    choices
    comments

    case_sensitive

    no
    True

Whether to do a case sensitive match on the filter specified

    element

    no
    *

service_group

icmp_service

protocol

rpc_service

icmp_service_group

url_category

application_situation

ip_service_group

icmp_ipv6_service

ip_service

tcp_service

tcp_service_group

udp_service

udp_service_group

ethernet_service

Type of service element to retrieve

    exact_match

    no

Whether to do an exact match on the filter specified

    expand

    no

group

Optionally expand element attributes that contain only href

    filter

    no
    *

String value to match against when making query. Matches all if not specified. A filter will attempt to find a match in the name, primary key field or comment field of a given record.

    limit

    no
    10

Limit the number of results. Set to 0 to remove limit.

    smc_address

    no

FQDN with port of SMC. The default value is the environment variable SMC_ADDRESS

    smc_alt_filepath

    no

Provide an alternate path location to read the credentials from. File is expected to be stored in ~.smcrc. If provided, url and api_key settings are not required and will be ignored.

    smc_api_key

    no

API key for api client. The default value is the environment variable SMC_API_KEY Required if url

    smc_api_version

    no

Optional API version to connect to. If none is provided, the latest SMC version API will be used based on the Management Center version. Can be set though the environment variable SMC_API_VERSION

    smc_domain

    no

Optional domain to log in to. If no domain is provided, 'Shared Domain' is used. Can be set throuh the environment variable SMC_DOMAIN

    smc_extra_args

    no

Extra arguments to pass to login constructor. These are generally only used if specifically requested by support personnel.

Dictionary object smc_extra_args

        parameter
        required
        default
        choices
        comments

        verify

        no
        True

yes

no

Is the connection to SMC is HTTPS, you can set this to True, or provide a path to a client certificate to verify the SMC SSL certificate. You can also explicitly set this to False.

    smc_logging

    no

Optionally enable SMC API logging to a file

Dictionary object smc_logging

        parameter
        required
        default
        choices
        comments

        path

        yes

Full path to the log file

        level

        no

Log level as specified by the standard python logging library, in int format. Default setting is logging.DEBUG.

    smc_timeout

    no

Optional timeout for connections to the SMC. Can be set through environment SMC_TIMEOUT

Examples
--------

.. code-block:: yaml

    - name: Obtain facts about Service Elements
      hosts: localhost
      gather_facts: no
      tasks:
      - name: Retrieve all Service elements
        service_element_facts:

      - name: Retrieve only TCP Services
        service_element_facts:
          element: tcp_service

      - name: Retrieve only TCP Services with port 8080
        service_element_facts:
          element: tcp_service
          filter: 8080

      - name: Retrieve TCP Service with HTTP in name
        service_element_facts:
          element: tcp_service
          filter: HTTP

      - name: Retrieve TCP Service group and expand members
        service_element_facts:
          element: tcp_service_group
          filter: mygroup
          expand:
            - group

Return Values
-------------

Common return values are documented `Return Values <http://docs.ansible.com/ansible/latest/common_return_values.html>`_, the following are the fields unique to this module:

.. raw:: html

    name
    description
    returned
    type
    sample

    services

All TCP services with filter of '80'

    always
    list
    [{'comment': '', 'max_dst_port': None, 'type': 'tcp_service', 'name': 'tcp80443', 'min_dst_port': 443}, {'comment': 'Element created for NAT Service', 'max_dst_port': None, 'type': 'tcp_service', 'name': 'HTTP_tcp_port_80', 'min_dst_port': 80}]

Notes
-----

.. note::
    - If a filter is not used in the query, this will return all results for the element type specified. The return data in this case will only contain the metadata for the element which will be name and type. To get detailed information about an element, use a filter. When using filters on network or service elements, the filter value will search the element fields, for example, you could use a filter of '1.1.1.1' when searching for hosts and all hosts with this IP will be returned. The same applies for services. If you are unsure of the service name but know the port you require, your filter can be by port.

Author
~~~~~~

    * David LePage (@gabstopper)

Status
~~~~~~

This module is flagged as **preview** which means that it is not guaranteed to have a backwards compatible interface.

redpajama_set_name: RedPajamaGithub


Question: After passing another vehicle, when is it safe to pull back into the lane?
HINT: Or, at higher speeds, when you can seen some road in front of the other car's tires.
According to the National Safety Council this will give you a safety cushion of distance between you and the vehicle in front of you.
Question: In the event of a collision, wearing a seatbelt increases your chances of surviving by more than 50%.
HINT: High beams reflect back off the fog and cause glare. Fog lights alone do not provide sufficient light AND the level of light is too low to the ground. The National Highway Traffic Safety Administration, California, Florida, Texas and Wisconsin DOT all agree that driving with low beams or a combination of low beams and fog lights gives better visibility in the fog.
Question: One of the dangers of night driving is that darkness impairs your ability to judge distances, movements, and colors.
Question: When driving, how far ahead should you scan the road?
HINT: In urban areas, scan about a city block ahead or ¼ mile ahead of your vehicle. In rural or highway driving, scan about ½ to 1 mile ahead. Remember, the greater your speed, the faster you will approach a danger; hence the greater the need to scan farther ahead.
HINT: On a multilane highway with two or more lanes of traffic in the same direction or if the other vehicle is making, or about to make, a left turn and the lane, shoulder or pavement on the right is free and clear of obstructions enabling you to pass safely.
Question: True or False: All of the following are defensive driving techniques: speeding up to avoid being passed, following your vehicle maintenance schedule, making sure your tires are in good condition, driving slowly in the slow lane when talking on your cellphone.
Question: Which of the following is a type of aggressive driving?
HINT: Turn to the left because it causes them to make contact with the curb and use the curb as a chock to stop your vehicle.
Question: You and other vehicles approach an uncontrolled intersection. You should treat it as if which sign is present?
HINT: A lone driver approaching an uncontrolled intersection may treat the intersection as if a YIELD sign is present: You should cover your brake and go slow enough to stop if someone else is approaching. This then represents an imaginary yield sign (slow and proceed).
Question: Which are defensive driving techniques for rural and interstate driving?
Question: Fog, snow, and rain can reduce visibility and increase the risk of accidents and breakdowns.
c. Being run off the road.
Question: One of the dangers of driving in snow and ice is a decreased chance of skidding.
HINT: They warn you to slow down and be prepared to stop; of upcoming intersections; of different types of highways, curves; of traffic; etc.


text:
#pragma once
#include "chassis.h"
#include "shader_validation.h"
class UtilDescriptorSetManager {
  public:
    UtilDescriptorSetManager(VkDevice device, uint32_t numBindingsInSet);
    ~UtilDescriptorSetManager();

    VkResult GetDescriptorSet(VkDescriptorPool *desc_pool, VkDescriptorSetLayout ds_layout, VkDescriptorSet *desc_sets);
    VkResult GetDescriptorSets(uint32_t count, VkDescriptorPool *pool, VkDescriptorSetLayout ds_layout,
                               std::vector<VkDescriptorSet> *desc_sets);
    void PutBackDescriptorSet(VkDescriptorPool desc_pool, VkDescriptorSet desc_set);

  private:
    static const uint32_t kItemsPerChunk = 512;
    struct PoolTracker {
        uint32_t size;
        uint32_t used;
    };
    VkDevice device;
    uint32_t numBindingsInSet;
    std::unordered_map<VkDescriptorPool, struct PoolTracker> desc_pool_map_;
};
struct UtilQueueBarrierCommandInfo {
    VkCommandPool barrier_command_pool = VK_NULL_HANDLE;
    VkCommandBuffer barrier_command_buffer = VK_NULL_HANDLE;
};
VkResult UtilInitializeVma(VkPhysicalDevice physical_device, VkDevice device, VmaAllocator *pAllocator);
void UtilPreCallRecordCreateDevice(VkPhysicalDevice gpu, safe_VkDeviceCreateInfo *modified_create_info,
                                   VkPhysicalDeviceFeatures supported_features, VkPhysicalDeviceFeatures desired_features);
template <typename ObjectType>
void UtilPostCallRecordCreateDevice(const VkDeviceCreateInfo *pCreateInfo, std::vector<VkDescriptorSetLayoutBinding> bindings,
                                    ObjectType *object_ptr, VkPhysicalDeviceProperties physical_device_properties) {
    // If api version 1.1 or later, SetDeviceLoaderData will be in the loader
    auto chain_info = get_chain_info(pCreateInfo, VK_LOADER_DATA_CALLBACK);
    assert(chain_info->u.pfnSetDeviceLoaderData);
    object_ptr->vkSetDeviceLoaderData = chain_info->u.pfnSetDeviceLoaderData;

    // Some devices have extremely high limits here, so set a reasonable max because we have to pad
    // the pipeline layout with dummy descriptor set layouts.
    object_ptr->adjusted_max_desc_sets = physical_device_properties.limits.maxBoundDescriptorSets;
    object_ptr->adjusted_max_desc_sets = std::min(33U, object_ptr->adjusted_max_desc_sets);

    // We can't do anything if there is only one.
    // Device probably not a legit Vulkan device, since there should be at least 4. Protect ourselves.
    if (object_ptr->adjusted_max_desc_sets == 1) {
        object_ptr->ReportSetupProblem(object_ptr->device, "Device can bind only a single descriptor set.");
        object_ptr->aborted = true;
        return;
    }
    object_ptr->desc_set_bind_index = object_ptr->adjusted_max_desc_sets - 1;

    VkResult result1 = UtilInitializeVma(object_ptr->physicalDevice, object_ptr->device, &object_ptr->vmaAllocator);
    assert(result1 == VK_SUCCESS);
    std::unique_ptr<UtilDescriptorSetManager> desc_set_manager(
        new UtilDescriptorSetManager(object_ptr->device, static_cast<uint32_t>(bindings.size())));

    const VkDescriptorSetLayoutCreateInfo debug_desc_layout_info = {VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, NULL, 0,
                                                                    static_cast<uint32_t>(bindings.size()), bindings.data()};

    const VkDescriptorSetLayoutCreateInfo dummy_desc_layout_info = {VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, NULL, 0, 0,
                                                                    NULL};

    result1 = DispatchCreateDescriptorSetLayout(object_ptr->device, &debug_desc_layout_info, NULL, &object_ptr->debug_desc_layout);

    // This is a layout used to "pad" a pipeline layout to fill in any gaps to the selected bind index.
    VkResult result2 =
        DispatchCreateDescriptorSetLayout(object_ptr->device, &dummy_desc_layout_info, NULL, &object_ptr->dummy_desc_layout);

    assert((result1 == VK_SUCCESS) && (result2 == VK_SUCCESS));
    if ((result1 != VK_SUCCESS) || (result2 != VK_SUCCESS)) {
        object_ptr->ReportSetupProblem(object_ptr->device, "Unable to create descriptor set layout.");
        if (result1 == VK_SUCCESS) {
            DispatchDestroyDescriptorSetLayout(object_ptr->device, object_ptr->debug_desc_layout, NULL);
        }
        if (result2 == VK_SUCCESS) {
            DispatchDestroyDescriptorSetLayout(object_ptr->device, object_ptr->dummy_desc_layout, NULL);
        }
        object_ptr->debug_desc_layout = VK_NULL_HANDLE;
        object_ptr->dummy_desc_layout = VK_NULL_HANDLE;
        object_ptr->aborted = true;
        return;
    }
    object_ptr->desc_set_manager = std::move(desc_set_manager);

    // Register callback to be called at any ResetCommandBuffer time
    object_ptr->SetCommandBufferResetCallback(
        [object_ptr](VkCommandBuffer command_buffer) -> void { object_ptr->ResetCommandBuffer(command_buffer); });
}
template <typename ObjectType>
void UtilPreCallRecordDestroyDevice(ObjectType *object_ptr) {
    for (auto &queue_barrier_command_info_kv : object_ptr->queue_barrier_command_infos) {
        UtilQueueBarrierCommandInfo &queue_barrier_command_info = queue_barrier_command_info_kv.second;

        DispatchFreeCommandBuffers(object_ptr->device, queue_barrier_command_info.barrier_command_pool, 1,
                                   &queue_barrier_command_info.barrier_command_buffer);
        queue_barrier_command_info.barrier_command_buffer = VK_NULL_HANDLE;

        DispatchDestroyCommandPool(object_ptr->device, queue_barrier_command_info.barrier_command_pool, NULL);
        queue_barrier_command_info.barrier_command_pool = VK_NULL_HANDLE;
    }
    object_ptr->queue_barrier_command_infos.clear();
    if (object_ptr->debug_desc_layout) {
        DispatchDestroyDescriptorSetLayout(object_ptr->device, object_ptr->debug_desc_layout, NULL);
        object_ptr->debug_desc_layout = VK_NULL_HANDLE;
    }
    if (object_ptr->dummy_desc_layout) {
        DispatchDestroyDescriptorSetLayout(object_ptr->device, object_ptr->dummy_desc_layout, NULL);
        object_ptr->dummy_desc_layout = VK_NULL_HANDLE;
    }
    object_ptr->desc_set_manager.reset();

    if (object_ptr->vmaAllocator) {
        vmaDestroyAllocator(object_ptr->vmaAllocator);
    }
}

template <typename ObjectType>
void UtilPreCallRecordCreatePipelineLayout(create_pipeline_layout_api_state *cpl_state, ObjectType *object_ptr,
                                           const VkPipelineLayoutCreateInfo *pCreateInfo) {
    // Modify the pipeline layout by:
    // 1. Copying the caller's descriptor set desc_layouts
    // 2. Fill in dummy descriptor layouts up to the max binding
    // 3. Fill in with the debug descriptor layout at the max binding slot
    cpl_state->new_layouts.reserve(object_ptr->adjusted_max_desc_sets);
    cpl_state->new_layouts.insert(cpl_state->new_layouts.end(), &pCreateInfo->pSetLayouts[0],
                                  &pCreateInfo->pSetLayouts[pCreateInfo->setLayoutCount]);
    for (uint32_t i = pCreateInfo->setLayoutCount; i < object_ptr->adjusted_max_desc_sets - 1; ++i) {
        cpl_state->new_layouts.push_back(object_ptr->dummy_desc_layout);
    }
    cpl_state->new_layouts.push_back(object_ptr->debug_desc_layout);
    cpl_state->modified_create_info.pSetLayouts = cpl_state->new_layouts.data();
    cpl_state->modified_create_info.setLayoutCount = object_ptr->adjusted_max_desc_sets;
}

template <typename CreateInfo>
struct CreatePipelineTraits {};
template <>
struct CreatePipelineTraits<VkGraphicsPipelineCreateInfo> {
    using SafeType = safe_VkGraphicsPipelineCreateInfo;
    static const SafeType &GetPipelineCI(const PIPELINE_STATE *pipeline_state) { return pipeline_state->graphicsPipelineCI; }
    static uint32_t GetStageCount(const VkGraphicsPipelineCreateInfo &createInfo) { return createInfo.stageCount; }
    static VkShaderModule GetShaderModule(const VkGraphicsPipelineCreateInfo &createInfo, uint32_t stage) {
        return createInfo.pStages[stage].module;
    }
    static void SetShaderModule(SafeType *createInfo, VkShaderModule shader_module, uint32_t stage) {
        createInfo->pStages[stage].module = shader_module;
    }
};

template <>
struct CreatePipelineTraits<VkComputePipelineCreateInfo> {
    using SafeType = safe_VkComputePipelineCreateInfo;
    static const SafeType &GetPipelineCI(const PIPELINE_STATE *pipeline_state) { return pipeline_state->computePipelineCI; }
    static uint32_t GetStageCount(const VkComputePipelineCreateInfo &createInfo) { return 1; }
    static VkShaderModule GetShaderModule(const VkComputePipelineCreateInfo &createInfo, uint32_t stage) {
        return createInfo.stage.module;
    }
    static void SetShaderModule(SafeType *createInfo, VkShaderModule shader_module, uint32_t stage) {
        assert(stage == 0);
        createInfo->stage.module = shader_module;
    }
};

template <>
struct CreatePipelineTraits<VkRayTracingPipelineCreateInfoNV> {
    using SafeType = safe_VkRayTracingPipelineCreateInfoCommon;
    static const SafeType &GetPipelineCI(const PIPELINE_STATE *pipeline_state) { return pipeline_state->raytracingPipelineCI; }
    static uint32_t GetStageCount(const VkRayTracingPipelineCreateInfoNV &createInfo) { return createInfo.stageCount; }
    static VkShaderModule GetShaderModule(const VkRayTracingPipelineCreateInfoNV &createInfo, uint32_t stage) {
        return createInfo.pStages[stage].module;
    }
    static void SetShaderModule(SafeType *createInfo, VkShaderModule shader_module, uint32_t stage) {
        createInfo->pStages[stage].module = shader_module;
    }
};

template <>
struct CreatePipelineTraits<VkRayTracingPipelineCreateInfoKHR> {
    using SafeType = safe_VkRayTracingPipelineCreateInfoCommon;
    static const SafeType &GetPipelineCI(const PIPELINE_STATE *pipeline_state) { return pipeline_state->raytracingPipelineCI; }
    static uint32_t GetStageCount(const VkRayTracingPipelineCreateInfoKHR &createInfo) { return createInfo.stageCount; }
    static VkShaderModule GetShaderModule(const VkRayTracingPipelineCreateInfoKHR &createInfo, uint32_t stage) {
        return createInfo.pStages[stage].module;
    }
    static void SetShaderModule(SafeType *createInfo, VkShaderModule shader_module, uint32_t stage) {
        createInfo->pStages[stage].module = shader_module;
    }
};

// Examine the pipelines to see if they use the debug descriptor set binding index.
// If any do, create new non-instrumented shader modules and use them to replace the instrumented
// shaders in the pipeline.  Return the (possibly) modified create infos to the caller.
template <typename CreateInfo, typename SafeCreateInfo, typename ObjectType>
void UtilPreCallRecordPipelineCreations(uint32_t count, const CreateInfo *pCreateInfos, const VkAllocationCallbacks *pAllocator,
                                        VkPipeline *pPipelines, std::vector<std::shared_ptr<PIPELINE_STATE>> &pipe_state,
                                        std::vector<SafeCreateInfo> *new_pipeline_create_infos,
                                        const VkPipelineBindPoint bind_point, ObjectType *object_ptr) {
    using Accessor = CreatePipelineTraits<CreateInfo>;
    if (bind_point != VK_PIPELINE_BIND_POINT_GRAPHICS && bind_point != VK_PIPELINE_BIND_POINT_COMPUTE &&
        bind_point != VK_PIPELINE_BIND_POINT_RAY_TRACING_NV) {
        return;
    }

    // Walk through all the pipelines, make a copy of each and flag each pipeline that contains a shader that uses the debug
    // descriptor set index.
    for (uint32_t pipeline = 0; pipeline < count; ++pipeline) {
        uint32_t stageCount = Accessor::GetStageCount(pCreateInfos[pipeline]);
        new_pipeline_create_infos->push_back(Accessor::GetPipelineCI(pipe_state[pipeline].get()));

        bool replace_shaders = false;
        if (pipe_state[pipeline]->active_slots.find(object_ptr->desc_set_bind_index) != pipe_state[pipeline]->active_slots.end()) {
            replace_shaders = true;
        }
        // If the app requests all available sets, the pipeline layout was not modified at pipeline layout creation and the already
        // instrumented shaders need to be replaced with uninstrumented shaders
        if (pipe_state[pipeline]->pipeline_layout->set_layouts.size() >= object_ptr->adjusted_max_desc_sets) {
            replace_shaders = true;
        }

        if (replace_shaders) {
            for (uint32_t stage = 0; stage < stageCount; ++stage) {
                const SHADER_MODULE_STATE *shader =
                    object_ptr->GetShaderModuleState(Accessor::GetShaderModule(pCreateInfos[pipeline], stage));

                VkShaderModuleCreateInfo create_info = {};
                VkShaderModule shader_module;
                create_info.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
                create_info.pCode = shader->words.data();
                create_info.codeSize = shader->words.size() * sizeof(uint32_t);
                VkResult result = DispatchCreateShaderModule(object_ptr->device, &create_info, pAllocator, &shader_module);
                if (result == VK_SUCCESS) {
                    Accessor::SetShaderModule(&(*new_pipeline_create_infos)[pipeline], shader_module, stage);
                } else {
                    object_ptr->ReportSetupProblem(object_ptr->device,
                                                   "Unable to replace instrumented shader with non-instrumented one.  "
                                                   "Device could become unstable.");
                }
            }
        }
    }
}
// For every pipeline:
// - For every shader in a pipeline:
//   - If the shader had to be replaced in PreCallRecord (because the pipeline is using the debug desc set index):
//     - Destroy it since it has been bound into the pipeline by now.  This is our only chance to delete it.
//   - Track the shader in the shader_map
//   - Save the shader binary if it contains debug code
template <typename CreateInfo, typename ObjectType>
void UtilPostCallRecordPipelineCreations(const uint32_t count, const CreateInfo *pCreateInfos,
                                         const VkAllocationCallbacks *pAllocator, VkPipeline *pPipelines,
                                         const VkPipelineBindPoint bind_point, ObjectType *object_ptr) {
    using Accessor = CreatePipelineTraits<CreateInfo>;
    if (bind_point != VK_PIPELINE_BIND_POINT_GRAPHICS && bind_point != VK_PIPELINE_BIND_POINT_COMPUTE &&
        bind_point != VK_PIPELINE_BIND_POINT_RAY_TRACING_NV) {
        return;
    }
    for (uint32_t pipeline = 0; pipeline < count; ++pipeline) {
        auto pipeline_state = object_ptr->ValidationStateTracker::GetPipelineState(pPipelines[pipeline]);
        if (nullptr == pipeline_state) continue;

        uint32_t stageCount = 0;
        if (bind_point == VK_PIPELINE_BIND_POINT_GRAPHICS) {
            stageCount = pipeline_state->graphicsPipelineCI.stageCount;
        } else if (bind_point == VK_PIPELINE_BIND_POINT_COMPUTE) {
            stageCount = 1;
        } else if (bind_point == VK_PIPELINE_BIND_POINT_RAY_TRACING_NV) {
            stageCount = pipeline_state->raytracingPipelineCI.stageCount;
        } else {
            assert(false);
        }

        for (uint32_t stage = 0; stage < stageCount; ++stage) {
            if (pipeline_state->active_slots.find(object_ptr->desc_set_bind_index) != pipeline_state->active_slots.end()) {
                DispatchDestroyShaderModule(object_ptr->device, Accessor::GetShaderModule(pCreateInfos[pipeline], stage),
                                            pAllocator);
            }

            const SHADER_MODULE_STATE *shader_state = nullptr;
            if (bind_point == VK_PIPELINE_BIND_POINT_GRAPHICS) {
                shader_state = object_ptr->GetShaderModuleState(pipeline_state->graphicsPipelineCI.pStages[stage].module);
            } else if (bind_point == VK_PIPELINE_BIND_POINT_COMPUTE) {
                assert(stage == 0);
                shader_state = object_ptr->GetShaderModuleState(pipeline_state->computePipelineCI.stage.module);
            } else if (bind_point == VK_PIPELINE_BIND_POINT_RAY_TRACING_NV) {
                shader_state = object_ptr->GetShaderModuleState(pipeline_state->raytracingPipelineCI.pStages[stage].module);
            } else {
                assert(false);
            }

            std::vector<unsigned int> code;
            // Save the shader binary
            // The core_validation ShaderModule tracker saves the binary too, but discards it when the ShaderModule
            // is destroyed.  Applications may destroy ShaderModules after they are placed in a pipeline and before
            // the pipeline is used, so we have to keep another copy.
            if (shader_state && shader_state->has_valid_spirv) code = shader_state->words;

            object_ptr->shader_map[shader_state->gpu_validation_shader_id].pipeline = pipeline_state->pipeline;
            // Be careful to use the originally bound (instrumented) shader here, even if PreCallRecord had to back it
            // out with a non-instrumented shader.  The non-instrumented shader (found in pCreateInfo) was destroyed above.
            VkShaderModule shader_module = VK_NULL_HANDLE;
            if (bind_point == VK_PIPELINE_BIND_POINT_GRAPHICS) {
                shader_module = pipeline_state->graphicsPipelineCI.pStages[stage].module;
            } else if (bind_point == VK_PIPELINE_BIND_POINT_COMPUTE) {
                assert(stage == 0);
                shader_module = pipeline_state->computePipelineCI.stage.module;
            } else if (bind_point == VK_PIPELINE_BIND_POINT_RAY_TRACING_NV) {
                shader_module = pipeline_state->raytracingPipelineCI.pStages[stage].module;
            } else {
                assert(false);
            }
            object_ptr->shader_map[shader_state->gpu_validation_shader_id].shader_module = shader_module;
            object_ptr->shader_map[shader_state->gpu_validation_shader_id].pgm = std::move(code);
        }
    }
}
template <typename ObjectType>
// For the given command buffer, map its debug data buffers and read their contents for analysis.
void UtilProcessInstrumentationBuffer(VkQueue queue, CMD_BUFFER_STATE *cb_node, ObjectType *object_ptr) {
    if (cb_node && (cb_node->hasDrawCmd || cb_node->hasTraceRaysCmd || cb_node->hasDispatchCmd)) {
        auto gpu_buffer_list = object_ptr->GetBufferInfo(cb_node->commandBuffer);
        uint32_t draw_index = 0;
        uint32_t compute_index = 0;
        uint32_t ray_trace_index = 0;

        for (auto &buffer_info : gpu_buffer_list) {
            char *pData;

            uint32_t operation_index = 0;
            if (buffer_info.pipeline_bind_point == VK_PIPELINE_BIND_POINT_GRAPHICS) {
                operation_index = draw_index;
            } else if (buffer_info.pipeline_bind_point == VK_PIPELINE_BIND_POINT_COMPUTE) {
                operation_index = compute_index;
            } else if (buffer_info.pipeline_bind_point == VK_PIPELINE_BIND_POINT_RAY_TRACING_NV) {
                operation_index = ray_trace_index;
            } else {
                assert(false);
            }

            VkResult result = vmaMapMemory(object_ptr->vmaAllocator, buffer_info.output_mem_block.allocation, (void **)&pData);
            if (result == VK_SUCCESS) {
                object_ptr->AnalyzeAndGenerateMessages(cb_node->commandBuffer, queue, buffer_info.pipeline_bind_point,
                                                       operation_index, (uint32_t *)pData);
                vmaUnmapMemory(object_ptr->vmaAllocator, buffer_info.output_mem_block.allocation);
            }

            if (buffer_info.pipeline_bind_point == VK_PIPELINE_BIND_POINT_GRAPHICS) {
                draw_index++;
            } else if (buffer_info.pipeline_bind_point == VK_PIPELINE_BIND_POINT_COMPUTE) {
                compute_index++;
            } else if (buffer_info.pipeline_bind_point == VK_PIPELINE_BIND_POINT_RAY_TRACING_NV) {
                ray_trace_index++;
            } else {
                assert(false);
            }
        }
    }
}
template <typename ObjectType>
// Submit a memory barrier on graphics queues.
// Lazy-create and record the needed command buffer.
void UtilSubmitBarrier(VkQueue queue, ObjectType *object_ptr) {
    auto queue_barrier_command_info_it = object_ptr->queue_barrier_command_infos.emplace(queue, UtilQueueBarrierCommandInfo{});
    if (queue_barrier_command_info_it.second) {
        UtilQueueBarrierCommandInfo &queue_barrier_command_info = queue_barrier_command_info_it.first->second;

        uint32_t queue_family_index = 0;

        auto queue_state_it = object_ptr->queueMap.find(queue);
        if (queue_state_it != object_ptr->queueMap.end()) {
            queue_family_index = queue_state_it->second.queueFamilyIndex;
        }

        VkResult result = VK_SUCCESS;

        VkCommandPoolCreateInfo pool_create_info = {};
        pool_create_info.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
        pool_create_info.queueFamilyIndex = queue_family_index;
        result = DispatchCreateCommandPool(object_ptr->device, &pool_create_info, nullptr,
                                           &queue_barrier_command_info.barrier_command_pool);
        if (result != VK_SUCCESS) {
            object_ptr->ReportSetupProblem(object_ptr->device, "Unable to create command pool for barrier CB.");
            queue_barrier_command_info.barrier_command_pool = VK_NULL_HANDLE;
            return;
        }

        VkCommandBufferAllocateInfo buffer_alloc_info = {};
        buffer_alloc_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
        buffer_alloc_info.commandPool = queue_barrier_command_info.barrier_command_pool;
        buffer_alloc_info.commandBufferCount = 1;
        buffer_alloc_info.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
        result = DispatchAllocateCommandBuffers(object_ptr->device, &buffer_alloc_info,
                                                &queue_barrier_command_info.barrier_command_buffer);
        if (result != VK_SUCCESS) {
            object_ptr->ReportSetupProblem(object_ptr->device, "Unable to create barrier command buffer.");
            DispatchDestroyCommandPool(object_ptr->device, queue_barrier_command_info.barrier_command_pool, nullptr);
            queue_barrier_command_info.barrier_command_pool = VK_NULL_HANDLE;
            queue_barrier_command_info.barrier_command_buffer = VK_NULL_HANDLE;
            return;
        }

        // Hook up command buffer dispatch
        object_ptr->vkSetDeviceLoaderData(object_ptr->device, queue_barrier_command_info.barrier_command_buffer);

        // Record a global memory barrier to force availability of device memory operations to the host domain.
        VkCommandBufferBeginInfo command_buffer_begin_info = {};
        command_buffer_begin_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
        result = DispatchBeginCommandBuffer(queue_barrier_command_info.barrier_command_buffer, &command_buffer_begin_info);
        if (result == VK_SUCCESS) {
            VkMemoryBarrier memory_barrier = {};
            memory_barrier.sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER;
            memory_barrier.srcAccessMask = VK_ACCESS_MEMORY_WRITE_BIT;
            memory_barrier.dstAccessMask = VK_ACCESS_HOST_READ_BIT;

            DispatchCmdPipelineBarrier(queue_barrier_command_info.barrier_command_buffer, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
                                       VK_PIPELINE_STAGE_HOST_BIT, 0, 1, &memory_barrier, 0, nullptr, 0, nullptr);
            DispatchEndCommandBuffer(queue_barrier_command_info.barrier_command_buffer);
        }
    }

    UtilQueueBarrierCommandInfo &queue_barrier_command_info = queue_barrier_command_info_it.first->second;
    if (queue_barrier_command_info.barrier_command_buffer != VK_NULL_HANDLE) {
        VkSubmitInfo submit_info = {};
        submit_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
        submit_info.commandBufferCount = 1;
        submit_info.pCommandBuffers = &queue_barrier_command_info.barrier_command_buffer;
        DispatchQueueSubmit(queue, 1, &submit_info, VK_NULL_HANDLE);
    }
}
void UtilGenerateStageMessage(const uint32_t *debug_record, std::string &msg);
void UtilGenerateCommonMessage(const debug_report_data *report_data, const VkCommandBuffer commandBuffer,
                               const uint32_t *debug_record, const VkShaderModule shader_module_handle,
                               const VkPipeline pipeline_handle, const VkPipelineBindPoint pipeline_bind_point,
                               const uint32_t operation_index, std::string &msg);
void UtilGenerateSourceMessages(const std::vector<unsigned int> &pgm, const uint32_t *debug_record, bool from_printf,
                                std::string &filename_msg, std::string &source_msg);


Paperback, 6 x 8 in. / 160 pgs / 24 color / 136 bw.
The Black Flame of Paradise is the first novel by Chicago-based artist Zachary Cahill (born 1973). The book is a proposition for a new model of religious life grounded in artistic and personal relations to the divine.
FORMAT: Pbk, 6 x 8 in. / 160 pgs / 24 color / 136 b&w.


I have created a case for the blocked business partner which was rejected and BP is still in blocked stage. Now business wanted to create a new case for the same BP.
While creation of the case, system conveys that the case is already exist for the given business partner and workflow is not getting triggered as the workflow status is in completion status.
How to retrigger the case for already processed case? How to change the status of case from Rejected to approved or vice versa.
Only ONE open case exists per blocked BP.
You can find existing case by click button "display case" and find out who is responsible for this case.
In this person's workplace inbox should find such item and click button "Approve"/"Reject" to approve or reject this case.
I am working to configure Case Management to work with GTS. I have made what I believe are the correct configuration settings under Process Route and Case Types in the IMG for Case Management, and have activated it for SAP GTS. The guide recommends that you leave the default settings for most of the config, which I have. However, when I try to create a case I receive the message "No process route model could be determined".
Can you share the detailed steps in sequence to set up case management?
Could you please create different discussion thread for this.


A bite from a single mosquito can result in fever, headaches, and pain. Severe cases can experience a multitude of symptoms including bleeding, shock, organ failure -- and potentially death. There is no treatment or vaccine and no real means of protecting yourself in countries endemic for the disease. Continue reading..
When Beth Laitkep was fighting for her life in the hospital, she found unwavering support from her best friend, Stephanie Culley as she became a critical part of not only her friend's battle with breast cancer but also in the lives of Beth's six children.


text:
Louise Ganthiers, Bouquet
123456..5253
Abstraction-bright colors-blue,orange, turquoise, purple, red
Louise Ganthiers
LOUISE GANTHIERS (1907-1982), moved to Taos in 1950.
From a study of these paintings it appears obvious that the artist is heading toward a completely non-objective type of painting … her work demonstrates how a serious painter holds the mental conception within the bounds of plastic color. 46
—Alfred Morang, 1952 [cite source]
Louise Ganthiers came to Taos with the hope of becoming an artist. An administrator in a textile business, she had a longstanding interest in art and studied with the figurative-fantasy artist Rufino Tamayo in New York. In Taos, she became familiar with the artistic concepts of Hans Hofmann, and applied the results of all her training to her work. 47 In a statement about her relationship to art, she said:
I don't paint with ease. I wish I were capable of the smashing directness of some of my contemporaries. Some of these sketches have that quality. In carrying them further will I move toward the lyric, the muted understatement of the beautiful and gentle? I have been struggling to reach further into the abstract to break up forms in new ways to fix a space dimension on the canvas that has not been my approach. Yet if I find that I am saying something that infers crassness or harshness I won't be happy. I have tried to speak in different ways against tragedy, injustice and waste but my way is not that of harshness. 48 [cite source]
Ganthiers waged a struggle on both artistic and economic fronts. In the 1950s, she sold frozen custard to Taos tourists during the summer; she also went to San Francisco to find work and to show her paintings. There her paintings caught the attention of prominent art critic Alfred Frankenstein, who wrote several reviews of her work over the years. He may have seen the encaustic painting Buffalo Dancer (1954). There is an undeniable wildness to the figure which seems to be of another world. The dancer clearly has merged with the animal spirit. Frankenstein wrote:
Miss Ganthiers … is a painter who likes a rich, complex impasto, lays on her color most often with the palette knife, and brings off whatever she does with great skill and finely imaginative design. Her abstractions are excellent, but most striking of all are her pictures derived from the Indian dances she has seen in Taos, where she lives. Her big single figures are magnificently drawn, and her studies of group choreography handle the rhythms, the color, and the mysterious character of their subjects equally well … [It is refreshing] to see this theme handled by a creative artist who brings it genuine imagination, selectivity and power over the expressive values of paint. 49 [cite source]
Edited excerpt from David Witt, Taos Moderns (1992)
Bouquet, c.1950-1960
Overall: 45 15/16 x 24 3/16 in. (116.7 x 61.4 cm) Framed: 46 7/8 x 25 1/8 x 1 1/4 in. (119.1 x 63.8 x 3.2 cm)
Gift of Barbara and Michael Ogg


text:
Arrow Fat Left Icon Arrow Fat Right Icon Arrow Right Icon Cart Icon Close Circle Icon Expand Arrows Icon Facebook Icon Instagram Icon Twitter Icon Youtube Icon Hamburger Icon Information Icon Down Arrow Icon Mail Icon Mini Cart Icon Person Icon Ruler Icon Search Icon Shirt Icon Triangle Icon Bag Icon Play Video
Venue & Show Information
What's Been On
Artists & Agents
POLICE DOG HOGAN - Thurs 2nd March 2017
Police Dog Hogan made a welcome return to Inchyra Arts Club on Thursday 2 March as part of an extensive tour throughout February, March and April to promote their brand new studio album 'Wild By The Side Of The Road'. The band's driving country-rock rhythms and Americana vibe were used to full effect as they showcased material from the new album as well as all the old favourites.
Released on Major Tom Records the new album marks a turning point in the band's recording career and is already attracting excited interest from local, national and online press and radio. The collective musical skills of the band have been used to full effect to create an album that delivers on both interpretation and atmosphere underpinned by lead singer James Studholme's lyrics based on stories and personal observations.
"This is an utterly unique venue" says James Studholme. "We were lucky enough to play here when we were touring our last CD, 'Westward Ho!' and are thrilled that James and Caroline Inchyra have asked us back. Their enthusiasm for the music really shines through and they have created a magical atmospheric place to play. We had a fantastic night last time and this promises to be the same only more so!" he adds.
Formed in 2009, the band has evolved over the years into a tight-knit eight-piece unit combining guitar, fiddle, banjo, mandolin, accordion, trumpet, keyboards, bass and drums to create an exuberant fusing of country, pop, folk and rocking bluegrass. They have served their time on the touring scene with more than three hundred live shows under their belts, including appearances at the AMA Awards in Nashville and many prestigious UK festivals. They now regularly play to sell-out audiences up and down the country.


The firm is dedicated to addressing legal issues defending work-related injuries in Connecticut. More importantly, it has developed a genuine connection and loyalty to its clients.
Although the firm primarily handles Workers' Compensation matters, it also handles insurance litigation issues. This includes subrogation and lien recovery, insurance coverage disputes, wrongful termination and personal injury matters.


When DirectAudit 3.3.1 on AIX is enabled, SSH attempts appear to hang before the login process completes.
If DirectAudit is disabled or the user is added to the dash.skiplist.user in the /etc/centrifyda/centrifyda.conf, the user can then login without any issues.
When DirectAudit (dad) is running, it will open a LRPC2 socket in /var/centrifydc/audit.
If the LRPC2 socket (/var/centrifyda/audit) is not accessible because world bit has no read/execute permission to /var/centrifyda, all LRPC2 non-root clients cannot connect to the socket. Cdash is run as the login user who is not root.
In this scenario, the rights on /var/centrifyda were set to 750, instead of 755.
Because of the incorrect directory permissions, the non-root user was unable to connect to the LPRC2 socket to complete the SSH authentication.
After making the change, users will be able to SSH without it hanging when DirectAudit is enabled on the system.


text:
CBN provides $268.4 mln, ¥46.3 mln for agric, raw materials
by Aturu Julius
The Central Bank of Nigeria (CBN) on Friday provided $340 million and 46.3 million Chinese Yuan (CNY) to customers seeking foreign exchange in the agricultural and raw materials sector.
CBN Spokesperson, Isaac Okorafor, said the sales in the Chinese Yuan was done through a combination of spot and short-tenored forwards segment of the foreign exchange market.
He said the Chinese Yuan was made available only to customers with Renminbi denominated Letters of Credit for agriculture as well as raw materials and machinery.
Mr Okorafor said the availability of Renminbi would eventually ease pressure on the Nigerian foreign exchange market.
He attributed the current stability in the foreign exchange market to the continued intervention of the CBN.
"The apex bank remains committed to ensuring that all sectors continue to enjoy access to foreign exchange required for business, whether in US dollars or Chinese Yuan," the CBN spokesman said.
Meanwhile, a dollar exchanged for N360 at the Bureau de Change (BDC) segment of the foreign exchange market, while one CNY exchanged for N54.
Aturu Julius 256 Posts
Aturu Julius, also known as AJulius, was born and raised in the Osun State, Nigeria. He studied Business Management, award winning publisher and business writer. He worked as a book reviewer for young adult, also a writer. He lives in Lagos, Nigeria and his love for crunching numbers, currency is shocking.


text:
Refaat Bashir Mohamed
Recommended reading: http://www.practicalaction.org
Posts by Refaat
It's a happier life with biogas
Biomass energy (firewood, charcoal, and crop residues) makes up more than 80% of primary energy consumption in Sudan. Over many years, it has become evident that high dependence on biomass energy is a major factor in forest cover depletion, environmental degradation and desertification. Successive drought cycles that have stricken the Sudano-Sahelian countries since the early 1970s, and from then on, Sudan has suffered lasting, disastrous effects and the encroachment of the desert. The desert and semi-desert represent 51.5% of the total area, and if the low rainfall savannah zone is added, the figure jumps to more than 80.6%. This indicates that the problem of desertification and desert encroachment is of a serious magnitude in the Sudan. The total area affected by desertification amounts to around 1.3 million square kilometers (50.5% of the total area of the country).
In the far east of Kassala state, birds sing remorsefully. They have no shady trees in which to build their nests. The trees stand bare because their branches are cut by villagers for shelter, lighting, heating and cooking food. Children are denied the chance to play games under the trees' shadow as the trees are naked of leaves. Animals do their best to find shade after their long journey fetching fodder. Women and girls were always in the bushes collecting firewood for cooking shouldering their fear of the unknown with the risk of wild animals and sexual assault. This situation had evoked compassion in policy makers, development practitioners, and development organizations to lend a hand to those vulnerable groups with special focus on women and children.
The majority of the rural and peri-urban poor in Sudan rely on fuel wood or charcoal for cooking on inefficient stoves or three stone fires, and on kerosene and candles for light. This programme aims to reduce the consumption of biomass energy (wood and charcoal) which has devastating environmental and health effects particularly for women and girls who are primarily responsible for cooking.
Practical Action Sudan's objective is to improve the social welfare of the peri-urban and rural population, contribute to poverty reduction and gender equality and to reduce the environmental impact of energy by having access to clean, reliable and affordable energy services for 20,000 direct beneficiaries and 595,000 indirect beneficiaries by 2017.
Practical Action, as key player in this field, brought together governments, donors, civil society and the private sector to adopt Total Energy Access (TEA) as an approach to define and deliver energy to the billions of poor people who need it.
Sustainable Energy for All
The Sustainable Energy for All (SE4ALL) initiative has three goals:
Achieving universal energy access
Doubling the annual rate of energy efficiency
Doubling the share of renewables in the global energy mix
Practical Action Sudan has a wealth of experiences in achieving access to clean energy which is affordable, accessible and available, through the promotion of user friendly technologies such as improved stoves, LPG gas and recently a biogas pilot project.
The biogas pilot project was implemented in Elgabrat and Shambob in close collaboration with Program Development Fund (PDF), Sudan University for Science and Technology (SUST), the World Bioenergy Association (WBA Sweden) with research capacity from the Kassala Women's Development network (KWDAN) and the Elgandoul network. It covers four dimensions:
WHO reported that 4.3 million people, mainly women and children, die each year from Indoor Air Pollution. The use of firewood for cooking also causes numerous respiratory diseases as well as headaches, runny nose and red eyes and diseases.
Zahra from Shambob spoke to the team,
"You can see yourself that my family is free from allergic and other respiratory diseases and accordingly no more money is paid to cure such diseases, thank God, Biogas is innocent from all these crimes".
Unfortunately it is women and girls who shoulder the burden of walking long distances to fetch firewood for cooking. Hence they were vulnerable to sexual hazards, dropped out of school dropout and were unable to meet their household obligations as well as having insufficient time for leisure with their family. Biogas released them from this trap.
Most of poor family's income is devoted for securing charcoal and firewood for domestic use, such as cooking and lighting, at the expense of other things such as school fees, clothes, shelter improvement and other social obligations. Biogas is a breakthrough in improving the livelihoods of poor families. Animal dung is no longer on the rubbish heap in the backyard and annoying the neighbours, it actually contributes to the eradication of poverty of poor and marginalized groups, and creates of new employment opportunities and income generation sources. It has opened a window and given a new spark of hope for a better tomorrow to a vast number of pastoralists and agro-pastoralists.
Mohammed Osham from Elgabarat village said,
"Now I can tear up the invoices of charcoal and fire wood for cooking!"
One great challenge still is the high cost of the biogas unit ($400) which is unaffordable not only for lower income groups but also for middle income ones.
Numerous environmental hazards result from the massive cutting of trees for firewood and other purposes. There is drastic deforestation, land erosion, desertification, shortage of fodder, little underground water storage, poor rainfall, and even limited biodiversity. Now the turning point is that biogas can leapfrog older technologies of obtaining cooking energy (firewood and charcoal) and invest in cheaper and more environmentally friendly technologies which sustain the environment for generations to come.
Biogas addresses the issue of inequitable access to energy and contributes to technology justice.
3 Comments » | Add your comment
Knowledge enables us to raise our voice
"I, myself, believe that 'seeing is believing'; in the sense that when I see someone smiling in a difficult place, it means that we are on the right track" said Mohammed Ali, the chairperson of El Gandoul Network.
Together with Practical Action we have helped people help themselves and take a leap out of the poverty trap. Lives have been transformed by making business out of nothing. Can you believe that sometimes what we planned at the project level exceeds our expectations? Whatever the difficulties, at the end of the day we proved that people have the power and self-confidence to enable them to say 'we will never give up the fight!'
Yes, we are farmers and are proud of producing food from this land not solely for self-consumption, but also to feed others. The knowledge we have gained from extension services such as water harvesting, improved seeds, pest control, harvest and storage, remain our main asset now. Yes, now we can help our peers improve their productivity and we can go further to help them approach markets and engage with other farmers and sell their products at a fair price, instead of selling at the farm gate which often is not profitable. Yes, we, as famers, have learned a lot about market opportunities and producers' forums from Practical Action, in building our capacity.
Now we can voice our concerns and engage in policy change in our favour through lobbying and advocacy.
Mohammed Ali ended by saying that "Yes, we are grateful to what Practical Action has done to us and we promise to keep the candle alight."
The dream of all
Since we are working closely with poor people, we try to put ourselves into their mindset. In the early morning when I wake up my main concerns are food, the kids' breakfast and pocket money to go to school. Similarly I always worry not only about the pressing need of daily consumption, but also the needs of my neighbours. This has pushed me strongly to think positively towards our needy and most vulnerable people.
Our community based organisation, the Kassala Women Development Network (KWDAN) and Elgnadoul Network approached women households groups with the highest levels of need to help them to create a new dawn in their lives.
The team was astonished by their preparedness and their strategy to cope with off farm livelihood options. We did not apply our academic and development methods, we simply we stood alongside them and started to listen and learn from them. Their system of managing credit funds depends on trust among the whole group.
Proudly they said:
"Our challenge is to sustain life by providing livelihoods options such as poultry and goats. Now through the generous support of Practical Action we no longer depend on small, seasonal gifts from our relatives. Milking goats and selling eggs has enabled us to be self-supporting women. Our kids are proud of us. This is the best thing that has happened to us, it is just like Obama's slogan about the change we need."


Day permit is available at R50 pppd for access to Aansluit Landgoed (Guests lodging in Afsluit and Ou Skooltjie have free access). The permit allows hiking, birding, fishing, mountain biking (bring your own bike). Dogs on laces are welcome.
We look forward entertaining you.


text:
Q: How should headings be handled in global elements for accessibility purposes? In many designs, a number of headings may appear in the header, footer, or other global elements of a website. One example would be denoting "Contact Us," "Our Address," and similar sections in the page footer, or a tagline in the page header.
In these cases, I've historically tended to use
 elements, as they're the lowest priority heading, and therefore I assumed that the would be best suited to this use case.
However, I recently started trying to improve accessibility on my projects, and I've found that essentially every automated a11y testing tool says that this isn't the correct way to do this. I constantly get errors stating "the heading structure is not logically nested" because
 either appears before any other heading (in the case of a tagline in the page header), or jumps from an earlier heading to
 (in the case of footer titles, when the rest of the content stops after anything less than
).
I would just change the
 in the header and footer to
 styled to match their original designs, but that seems incorrect to me – shouldn't each section with a heading in the footer be denoted with an actual heading?
What is the appropriate way to denote headings in global elements of a page to ensure accessibility?

A: The typical site can have a logical heading outline by using the site name as top-level heading. Everything on the page belongs to the site, the page's main content as well as the site navigation as well as the footer etc.

Site name

Site navigation

Page main content

Contact us

Our address

(Note that a tagline should not be a heading.)
With HTML5, you can make the sections explicit (article, aside, nav, section), and convey what each section is part of (header, main, footer):

Site name

Site tagline

Site navigation

Page main content

Contact us

Our address

(If the footer consists of many sections, it can make sense to introduce grouping headings/sections where possible, e.g., 'Contact' in this example. That said, not every footer needs sections/headings to begin with, especially not if the content is rather thin or not that important.)

A: Tools that flag the heading levels should only be doing so as a "warning" or "needs review".  You can't make a blanket statement that an
 must follow an
.  I think what you're doing is correct.  Make all the footer headings an
 so that it's consistent across the entire site.  You might have pages that have enough information to warrant headings up to an
 but something like a "contact us" page probably has just an
.  Having an
 and then
 is not an automatic WCAG failure.
1.3.1 Info and Relationships is typically the guideline used to flag headings in error but all that requirement says is

Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.

It says nothing about skipping heading levels (except in some of the recommended techniques to achieve 1.3.1, but those are non-normative).  For example, H42: Using h1-h6 to identify headings talks about using proper headings but one of the examples shows it's ok to have an
 before an
.

redpajama_set_name: RedPajamaStackExchange


text:
At least 7 killed in 34-car pileup on UK highway
A huge crash involving 34 vehicles on a highway in southwestern England killed at least seven people and injured 51, British police said on Saturday.
(AP) A huge crash involving 34 vehicles on a highway in southwestern England killed at least seven people and injured 51, British police said on Saturday.
The crash on Friday night involved explosions, and cars and tractor trailers burning "literally to the ground," Assistant Chief Constable Anthony Bangham told reporters. Police expect the death toll to rise and they fear they may find more bodies in the wreckage, Bangham said.
Video footage shown on British news channels showed large balls of fire consuming trucks, and billowing smoke at the scene.
It was not immediately clear what caused the collision on the M5 highway, but police said foggy conditions and wet road surfaces were partly to blame. Road accidents of this scale are rare in Britain, and rescuers have described the pile-up as one of the worst in living memory.
The affected section of the busy highway has been closed in both directions as police remove all vehicles for forensic examination. The highway will not be reopened until Sunday at the earliest, police said.